Помогите найти ошибку

letyagin
Offline
Зарегистрирован: 09.06.2016

Полазив в интернете,написал скетч,на компилятор выдаёт ошибку.Что не так?

registra:54: error: 'rts' was not declared in this scope

/*Сохранение на карту памяти данных от датчика температуры и влажности
с фиксации времени.
Принцип работы- При обнуружении изменения температуры на -+1 градус
записываем на sd карту.
*/
#include <SD.h>
#include <DS1307.h>
#include <DHT.h>

DS1307 rtc(A4,A5);

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
File myFile;
int SaveTemperature;

void setup()
{

Serial.begin(9600);
dht.begin();// включаем библеотеку"DHT"

SaveTemperature = dht.readTemperature();// фиксируем текущую температуру
// тестируем карту на работоспособность

Serial.print("Initializing SD card...");

if (SD.begin(10)) // здесь можно изменить номер пина CS-pin 10
{
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
SDcardWrite(); // запускаем функцию записи на карту
}

void SDcardWrite() //делаем функцию для записи на карту
{
// создаём новый или открываем существующий файл на карте
// например с именем dimasens.txt
// максимум 8 символов - 12345678.123

myFile = SD.open("dimasens.txt",FILE_WRITE);

if (myFile) {
Serial.print("Writing to dimasens.txt...");

// начинаем записывать на карту строку в файл dimasens.txt

myFile.print(rts.getDateStr()); //текущую дату                                 НА ЭТОЙ СТРОКЕ ОШИБКА
myFile.print("--");
myFile.print(rts.getTimeStr()); //текущие время
myFile.print("--");

myFile.print("Humidity: ");
myFile.print(dht.readHumidity()); // значение влажности
myFile.print("%\t");
myFile.print("Temperature: ");
myFile.print(dht.readTemperature()); // значение температуры
myFile.print(" *c");

myFile.close(); // закрываем файл
Serial.println("done.");
}
else {
Serial.println("error opening dimasens.txt");
}
}
//делаем функцию для чтения с карты и вывода в порт монитора
void SDcardRead()
{
myFile = SD.open("dimasens.txt");
if (myFile) {
Serial.println("dimasens.txt");

while (myFile.available()) {
Serial.write(myFile.read());

}
myFile.close();
}
else {
Serial.println("error opening dimasens.txt");
}
}
void loop()
{
// чтоб бессмысленно не записывать сделаем проверку
if (SaveTemperature !=dht.readTemperature())
SDcardWrite();// запускаем функцию записи на карту
//снова фиксируем значение температуры
SaveTemperature = dht.readTemperature();

}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Как считаешь - rtc и rts - одинаковые идентификаторы или нет? Объявляешь rtc, а потом обращаешься к rts.

letyagin
Offline
Зарегистрирован: 09.06.2016

У тебя глаз алмаз)Спасибо,помогло.

letyagin
Offline
Зарегистрирован: 09.06.2016

Дописал концовку тоже ошибка.

registra:100: error: expected unqualified-id before 'if'

/*Сохранение на карту памяти данных от датчика температуры и влажности
с фиксации времени.
Принцип работы- При обнуружении изменения температуры на -+1 градус
записываем на sd карту.
*/
#include <SD.h>
#include <DS1307.h>
#include <DHT.h>

DS1307 rtc(A4,A5);

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
File myFile;
int SaveTemperature;

void setup()
{

Serial.begin(9600);
dht.begin();// включаем библеотеку"DHT"

SaveTemperature = dht.readTemperature();// фиксируем текущую температуру
// тестируем карту на работоспособность

Serial.print("Initializing SD card...");

if (SD.begin(10)) // здесь можно изменить номер пина CS-pin 10
{
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
SDcardWrite(); // запускаем функцию записи на карту
}

void SDcardWrite() //делаем функцию для записи на карту
{
// создаём новый или открываем существующий файл на карте
// например с именем dimasens.txt
// максимум 8 символов - 12345678.123

myFile = SD.open("dimasens.txt",FILE_WRITE);

if (myFile) {
Serial.print("Writing to dimasens.txt...");

// начинаем записывать на карту строку в файл dimasens.txt

myFile.print(rtc.getDateStr()); //текущую дату
myFile.print("--");
myFile.print(rtc.getTimeStr()); //текущие время
myFile.print("--");

myFile.print("Humidity: ");
myFile.print(dht.readHumidity()); // значение влажности
myFile.print("%\t");
myFile.print("Temperature: ");
myFile.print(dht.readTemperature()); // значение температуры
myFile.print(" *c");

myFile.close(); // закрываем файл
Serial.println("done.");
}
else {
Serial.println("error opening dimasens.txt");
}
}
//делаем функцию для чтения с карты и вывода в порт монитора
void SDcardRead()
{
myFile = SD.open("dimasens.txt");
if (myFile) {
Serial.println("dimasens.txt");

while (myFile.available()) {
Serial.write(myFile.read());

}
myFile.close();
}
else {
Serial.println("error opening dimasens.txt");
}
}
void loop()
{
// чтоб бессмысленно не записывать сделаем проверку
if (SaveTemperature !=dht.readTemperature())                                        
SDcardWrite();// запускаем функцию записи на карту
//снова фиксируем значение температуры
SaveTemperature = dht.readTemperature();

}
// для вывода в сериал монитор данных с карты
if(Serial.available()>0){                                                                                     ОШИБКА                                                                             
// если отправить через сериал цифру 1 то выводим содержимое файла
if (Serial.read()-48 ==1)SDcardRead();

}

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Это весь  скетч?  Если да - то у тебя нижний if находится не в loop - перемести туда, и будет щастье. Имею в виду вот эти строчки кода:

// для вывода в сериал монитор данных с карты
if(Serial.available()>0){                                                                                     ОШИБКА                                                                             
// если отправить через сериал цифру 1 то выводим содержимое файла
if (Serial.read()-48 ==1)SDcardRead();

}

З.Ы. И вставь, плз, код с помощью кнопочки "code" в редакторе.

letyagin
Offline
Зарегистрирован: 09.06.2016
 void loop()
   { 
    // чтоб бессмысленно не записывать сделаем проверку
    if (SaveTemperature !=dht.readTemperature())
    SDcardWrite();// запускаем функцию записи на карту
    //снова фиксируем значение температуры
    SaveTemperature = dht.readTemperature();
    
   
   // для вывода в сериал монитор данных с карты
   if(Serial.available()>0){
    // если отправить через сериал цифру 1 то выводим содержимое файла
    if (Serial.read()-48 ==1)SDcardRead();
   }
   }

Умница.Скобки не там поставил)

letyagin
Offline
Зарегистрирован: 09.06.2016

Жду SDcard модуль.Придёт,буду испытывать.