Помогите найти ошибку
- Войдите на сайт для отправки комментариев
Полазив в интернете,написал скетч,на компилятор выдаёт ошибку.Что не так?
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();
}
Как считаешь - rtc и rts - одинаковые идентификаторы или нет? Объявляешь rtc, а потом обращаешься к rts.
У тебя глаз алмаз)Спасибо,помогло.
Дописал концовку тоже ошибка.
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();
}
Это весь скетч? Если да - то у тебя нижний if находится не в loop - перемести туда, и будет щастье. Имею в виду вот эти строчки кода:
З.Ы. И вставь, плз, код с помощью кнопочки "code" в редакторе.
Умница.Скобки не там поставил)
Жду SDcard модуль.Придёт,буду испытывать.