На sd карту пишет только один датчик
- Войдите на сайт для отправки комментариев
Ср, 02/03/2016 - 14:07
Прошу помощи у вас.
Не могу решить проблему, не пишутся показания с датчиков ds18b20 на sd карту. Пишется только один датчик, а остальные 5 не знаю как прописать. Уже мозг на этом сломал. Модель Atmega 328 p. Язык си (плюс). Как сделать чтобы все 6 датчиков писали свои показания на sd карту. Один видит а другие нет. Прошу Вас помочь.
Вам ведь уже написали, листинг сломанных мозгов в студию.
Во первых у датчиков есть адреса - к ним нужно обращаться по адресу. Получив темпиратуру с 6 датчиков нужно сформировать 1 строку и записать ее в файл.
В качестве примера вот код:
void WriteFile(void){ File myFile; char dbuf[20]; strncpy(dbuf,"DD.MM.YYYY hh:mm:ss\0",20); char name[19]; strncpy(name,"DD-MM-YY.csv\0",19); now.format(name); if(!SD.exists(name)){ myFile = SD.open(name, FILE_WRITE); if (myFile) { myFile.print("\xEF\xBB\xBFДата;"); for(int i=0;i<COUNT_THEMP;i++){ myFile.print("Темпиратура "); myFile.print(i+1); myFile.print(";"); } myFile.println("Номер измерения"); id = 0; } }else{ myFile = SD.open(name, FILE_WRITE); } if (myFile) { digitalWrite(13,HIGH); myFile.print(now.format(dbuf)); myFile.print(";"); for(int i=0;i<COUNT_THEMP;i++){ myFile.print(themp[i]); myFile.print(";"); } myFile.println(id); id++; } myFile.close(); if(id >10000){ id = 0; } } void ReadDS(void) { // initialize() scans the bus for sensors ds.initialize(); for(int i=0;i<COUNT_THEMP;i++){ // ask for a temperature conversion from sensor 0 ds.start_conversion(i); // read the scratchpad on the other side ds.read_scratchpad(i); dtostrf(ds.read_temperature(), 5, 2, themp[i]); } }