Не работает DS18B20 при опросе пинов
- Войдите на сайт для отправки комментариев
Вс, 23/10/2016 - 18:09
Задача: Снимать показания датчиков температуры через промежуток времени, при этом паралельно опрашивать аналоговые и цифровые пины, отправлять результат на ком порт.
Ситуация такова, если заремить опрос пинов - температура показывает нормально, если паралельно опрашивать -127
Причем если не использовать циклы, а написать километровый код - все работает,
Ардуино мега 2560 (китаец)
может проц не успевает
вот часть кода
byte t[5][8] = { {0x28,0xFF,0xA6,0xB7,0xA4,0x15,0x03,0x69}, { 0x28, 0xFD, 0xF3, 0x44, 0x06, 0x00, 0x00, 0xF1 }, { 0x28, 0xFD, 0xF3, 0x44, 0x06, 0x00, 0x00, 0xF1 }, { 0x28, 0xFF, 0x78, 0x61, 0x4E, 0x04, 0x00, 0xFA }, { 0x28, 0x7D, 0x7A, 0x44, 0x06, 0x00, 0x00, 0x23 } }; void setup() { Serial.begin(9600); Serial1.begin(9600); sensors.begin(); for (y=0;y<=10;y++){ sensors.setResolution(t[y], 11); } } void temp() { sensors.requestTemperatures(); Serial.print("d:t,");Serial.print(i333);Serial.print("="); Serial.print(sensors.getTempC(t[i333-1])); Serial.println(";"); } void loop() { i=i+1; ///// если это заремить (начало) for (y1=0;y1<=15;y1++){ sen[y1] = analogRead(y1+54); if (sen[y1] > 700) { z=y1+2; if (y1>=11){z=y1+3;} Serial.print("d:pin,");Serial.print(z);Serial.println("=1;"); Serial1.println(stb[y1]); //Serial.print(z);Serial.println(s[y]); delay(500); } //delay(10); } //цифровой for (y2=22;y2<=31;y2++){ pirPin[y2]=digitalRead(y2); if (pirPin[y2] == HIGH) { Serial.print("d:pin,");Serial.print(y2);Serial.println("=1;"); delay(500);} //delay(10); } ///// если это заремить (конец) //Движение for (y3=40;y3<=53;y3++){ pirDv[y3]=digitalRead(y3); if (pirDv[y3] == HIGH and y3!=41 and y3!=42) { Serial.print("d:Dv,");Serial.print(y3);Serial.println("=1;"); delay(500);} //delay(10); } //температура for (x=100;x<=6100;x=x+500){ if (i==x) { i333++; if (i333!=11 and i333!=12){ temp(); } if (i333==11){ pirPin[41]=digitalRead(41); if (pirPin[41]==HIGH){Serial.println("d:Dv,41=1;");} else {Serial.println("d:Dv,41=0;");}} if (i333==12){ pirPin[42]=digitalRead(42); if (pirPin[42]==HIGH){Serial.println("d:Dv,42=1;");} else {Serial.println("d:Dv,42=0;");} x=0;i333=0;i=0; } }}
Части кода мало. Нужно, как минимум, знать, как описаны массивы.
И охота с этой библой сношениями заниматься?
Части кода мало. Нужно, как минимум, знать, как описаны массивы.
И охота с этой библой сношениями заниматься?
пробовал без нее результат один и тот же
Можно попробовать промоделировать код под виртуальным отладчиком и посмотреть в чём дело. Нужен код полностью.
Части кода мало. Нужно, как минимум, знать, как описаны массивы.
не знаю с чем связано, но массивы были:
Чего массивы не относящиеся к температуре могли повлиять на работу градусников.
Так Вы ж память распахивали по самое не могу! Попробуйте завести выходныую трубу от унитаза в холодильник, а потом удивляётесь откуда там дерьмо - никто не гадил!
Это что за язык хоть?
Так чего Вы хотите?
привет. Уменя проблема с ДС18Б20. использовал ардуино уно,Лолин В3. Каждый раз показйвает -127.
В Ютубе тот же код работает на отлично. Не знаю что еще пробовать.
Можешь мне помочь?
-127 означает, что датчик не считывается. Проверяйте подключение.