Комбинированный код и ничего не работает. Головокружение однозначно
Я потратил чуть более 2 часов на отладку этого кода. Все, что я сделал, это объединил раздел кода для записи на SD-карту. Оба кода прекрасно работают сами по себе. Я не могу понять это. Я надеюсь, что свежий взгляд заметит ошибку. Я использую Arduino Nano с платой регистратора данных Robot-Deek. Контакт 10 используется для регистратора данных. Я использовал DTH11, но перешел на LM35, оба кода работали с LM35.
#include "RTClib.h"
#include <SD.h>
#include <SPI.h>
#define sample 500
#define current_ms millis()
RTC_DS1307 rtc;
File myFile;
int inPin = 0; //аналоговый вход
float val; //где хранить инфу от чтения inPin
int pinRed = A3; //вывод красного светодиода
float tempin = A5; //ввод датчика температуры
float tempf; // переменная для хранения температуры в градусах Фаренгейта
float vout; // переменная для хранения напряжения с датчика
int array1[sample]; //создает массив с количеством элементов, равным "выборке"
unsigned long averaging; // программа использует эту переменную для хранения суммы каждого создаваемого массива
int pinCS = 10; // запись на SD-карту
float last_dht11_reading_ms = 1;
DateTime now = rtc.now();
#define DHT11_SAMPLE_DELAY 500
void setup() {
Serial.begin(9600);
delay(500);//Задержка загрузки системы
SD.begin();
pinMode(pinCS, OUTPUT);
pinMode(tempin, INPUT);
Serial.println("Volt and Temperature\n\n");
Serial.println("middle the setup loop");
// Инициализация SD-карты
if (SD.begin())
{
Serial.println("SD card is ready to use.");
File myFile = SD.open("Datalog.csv",FILE_WRITE);
if (myFile) {
myFile.println("Time, Temp, Volt");
myFile.close();
}
} else
{
Serial.println("SD card initialization failed");
return;
}
rtc.begin();
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}//конец "настройки()"
void loop() {
for (int i = 0; i < sample; i++) { // этот код говорит программе заполнить каждый элемент массива, который мы создали с помощью
array1[i] = analogRead(inPin); //информация от антенного провода, выходящего из Arduino
averaging += array1[i]; //подробнее о циклах for http://arduino.cc/en/Reference/For
} // строка усреднения просто говорит: добавьте усреднение ко всему, что находится в позиции массива i
//усреднение += array[i] равнозначно усреднению = усреднение + array[i]
val = averaging / sample; //здесь программа берет сумму всех чисел в массиве1 и делит на количество элементов "образец"
val = constrain(val, 0, 100); // это ограничивает значение переменной между двумя числами от 0 до 100
val = map(val, 0, 100, 0, 255); //для получения дополнительной информации об ограничении http://arduino.cc/en/Reference/Constrain
analogWrite(pinRed, val*20); //оператор карты указывает программе отображать от 0-100 до 0-255
averaging = 0; //эта строка кода возвращает усреднение к нулю, чтобы ее можно было использовать снова
Serial.println("past the emf loop");
if ( (current_ms - last_dht11_reading_ms) > DHT11_SAMPLE_DELAY ) {
vout = analogRead(tempin); //читаем вывод LM35
float mv = (vout/1024)*5000; // преобразование в мВ
float celc = mv/10; // преобразовать в C
float tempf = ((celc*9)/5 + 32)/10; // преобразовать в F
myFile = SD.open("Datalog.csv", FILE_WRITE); //открыть файл журнала данных на SD-карте
if (myFile) { //записываем на SD карту time, tempf и val
myFile.print(now.hour());
myFile.print(":");
myFile.print(now.minute());
myFile.print(":");
myFile.print(now.second());
myFile.print(",");
myFile.print(tempf);
myFile.print(",");
myFile.println(val);
myFile.close(); // закрыть файл; // закрыть файл
last_dht11_reading_ms = current_ms;
}
Serial.println("past the logger loop");
//delay(1000);//Подождите 1 секунду перед повторным доступом к датчику.
}
}
// конец цикла()
@RobE, 👍0
Обсуждение1 ответ
▲ 1
ДатаВремя сейчас = rtc.now();
Не принадлежит выше void setup()
4 часа на устранение этой маленькой ошибки.
,
@RobE
Смотрите также:
- Отправка данных между Arduino Nano и D1 Mini
- классификация данных с ардуино
- Постоянная передача данных через Bluetooth на мониторинг
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
Что именно не работает как? Пожалуйста, объясните, что вы ожидали и какое поведение вы видите на самом деле, @chrisl
Я ожидаю, что он будет писать на SD-карту и на серийный монитор. Однако это не так. Я даже вставил несколько «маркеров» для вывода на последовательный монитор, чтобы узнать, какая часть кода сработала, но они тоже не печатаются. Светодиод не работает. Как будто код не работает., @RobE
удалите первый SD.begin() и pinMode для pinCS. добавить pinCS в качестве параметра второго SD.begin().
если (SD.begin(pinCS))
, @JurajСпасибо. Я внес изменения, которые вы предложили, и все еще ничего. Я запускаю код A, без проблем. Я запускаю код B, без проблем. Запустите этот код, комбинацию из двух, и я ничего не получу. Нет выходов., @RobE