Ви не увійшли.
Сторінки 1
Привет Всем!
Сразу скажу что я только начинаю эксперименты с ардуино.
Сделал тут конструктор с двумя терма-датчиками, диодом и экраном. На экран выводятся данные по температуре и в зависимости от диапазона горит нужный цвет диода.
КОд ниже.
Вопрос.
1) почему через сутки или чуть больше, меньше виснит
2) Как сделать, что бы экран засыпал, понимаю что постоянно показывать чревато.
Ну конечно самое главное почему виснет. (питание идет от USB)
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
OneWire oneWire(2); // вход датчиков 18b20
DallasTemperature ds(&oneWire);
//28 FF 2D 18 A2 15 03 30
//28 FF 67 5E 02 16 03 2E
DeviceAddress sensor1 = {0x28, 0xFF, 0x2D, 0x18, 0xA2, 0x15, 0x03, 0x30};
DeviceAddress sensor2 = {0x28, 0xFF, 0x67, 0x5E, 0x02, 0x16, 0x03, 0x2E};
// работа с экраном
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
// работа с диодами
int b = 10;
int g = 12;
int r = 11;
//
void setup() {
Serial.begin(9600);
ds.begin();
// Экран
lcd.begin(16, 2);
// объявляем используемые порты
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}
void loop() {
ds.requestTemperatures(); // считываем температуру с датчиков
Serial.print("Office : ");
Serial.print(ds.getTempC(sensor1)); // отправляем температуру
Serial.println("C");
Serial.print("Water : ");
Serial.print(ds.getTempC(sensor2));
Serial.println("C");
Serial.println();
// Экран
lcd.setCursor(0, 0);
lcd.print("Office");
lcd.setCursor(9, 0);
lcd.print(ds.getTempC(sensor1));
lcd.setCursor(0, 1);
lcd.print("Water");
lcd.setCursor(9, 1);
lcd.print(ds.getTempC(sensor2));
//
// диоды
if ( ds.getTempC(sensor2) <= 25){
//Serial.print(" blu ");
digitalWrite(r, LOW); //выключаем красный
digitalWrite(g, LOW); //выключаем зеленый
digitalWrite(b, HIGH); //включаем синий
}else if ( ds.getTempC(sensor2) >= 26.50 ){
//Serial.print(" red " );
digitalWrite(r, HIGH); //включаем красный
digitalWrite(g, LOW); //выключаем зеленый
digitalWrite(b, LOW); //выключаем синий
}else{
//Serial.print(" gre " );
digitalWrite(r, LOW); //выключаем красный
digitalWrite(g, HIGH); //включаем зеленый
digitalWrite(b, LOW); //выключаем синий
}
delay(1000);
}
Неактивний
Зависает только экран или на терминал тоже ничего не выдает?
всем привет, я только начинаю работать с ардуино, вероятно мои ответы будут вам полезны
LCD - выключить питание, и не забыть все ноги индикатора в ноль выставить, при повторном выводе выполнить переиницицизацию индикатора
зависание
- ошибки в библиотеках USB стека, кто его знает как ведет себя этот драйвер, при такой длительной работе
- переполнение стека ( USB / user lib ) ?
питание:
попробовать записать от внешнего источника, контроль только на индикаторе
вывод serial убрать, даже если очень нужен , Вы ищете плавающую ошибку )
Неактивний
Зависает только экран или на терминал тоже ничего не выдает?
Все виснет, и экран и serial ....
Вывод из зависания, просто кнопка ресет или сброс питания ....
Сейчас сделал плавающие надписи что бы экран не светился в одном месте ....
lcd.clear();
curOffice = random(0,5);
curOfficeTemp = (curOffice + 7);
lcd.setCursor(curOffice, 0);
lcd.print("Office");
lcd.setCursor(curOfficeTemp, 0);
lcd.print(ds.getTempC(sensor1));
lcd.setCursor(curOffice, 1);
lcd.print("Water");
lcd.setCursor(curOfficeTemp, 1);
lcd.print(ds.getTempC(sensor2));
У меня подозрение что это связано именно с USB, комп с Mac OS X, может он экономит так электричество ....
всем привет, я только начинаю работать с ардуино, вероятно мои ответы будут вам полезны
LCD - выключить питание, и не забыть все ноги индикатора в ноль выставить, при повторном выводе выполнить переиницицизацию индикатора
зависание
- ошибки в библиотеках USB стека, кто его знает как ведет себя этот драйвер, при такой длительной работе
- переполнение стека ( USB / user lib ) ?питание:
попробовать записать от внешнего источника, контроль только на индикаторе
вывод serial убрать, даже если очень нужен , Вы ищете плавающую ошибку )
Попробую все сделать, надо только питание найти внешнее ....
Остання редакція macik_ua (2016-04-15 11:47:49)
Неактивний
зарядка для телефона ) и кабель mini usb наверное
если не хотите выключать дисплей
можно сделать PWM подсветку, будет красиво )
срок жизни дисплея если не OLED пусть Вас особо не волнует, но срок службы устройства хватит
Неактивний
а какой индикатор ? как обычно подсветка выводить на pin
https://github.com/arduino/Arduino/blob … dCrystal.h
подсветки не видать, вероятнее всего по мануалу включена на питание,
переделываете аналог out , и будет работать
Остання редакція NoName (2016-04-15 16:12:33)
Неактивний
как убрать ошибку : exit status 1
expected initializer before 'pinMode'
вот программа:
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
void setup() {
// put your setup code here, to run once:
int pinOut = A1; // Константа. Будем использовать пин контроллера A1 для подключения светодиода.
// Процедура инициализации программы
void setup()
pinMode(pinOut, OUTPUT); // Установить пин А1 в режим выхода
Serial.begin(9600); // Инициировать работу COM порта платы на скорости 9600 бит в секунду
}
// Главный цикл программы
void loop()
// Проверяем, есть ли очереди COM порта входящие данные
if (Serial.available() > 0) {
int command = Serial.read(); // считываем значение из порта
if ('1' ==command){ //Если получена цифра "1"
digitalWrite(pinOut, 1); // Отправить логическую единицу (+5В) на пин А1
Serial.println("LED is ON"); //Отправить сообщение в COM порт
}else if ('0'==command){ //Если получена цифра "0"
digitalWrite(pinOut, 0); // Отправить логический ноль (0В) на на пин А1
Serial.println("LED is OFF"); //Отправить сообщение в COM порт
}
}
}
}
void loop() {
// put your main code here, to run repeatedly:
}
плата Ardruino/Genuino uno
// #include <boarddefs.h>
// #include <IRremote.h>
// #include <IRremoteInt.h>
// #include <ir_Lego_PF_BitStreamEncoder.h>
int pinOut = A1; // Константа. Будем использовать пин контроллера A1 для подключения светодиода.
void setup() {
// put your setup code here, to run once:
// Процедура инициализации программы
pinMode(pinOut, OUTPUT); // Установить пин А1 в режим выхода
Serial.begin(9600); // Инициировать работу COM порта платы на скорости 9600 бит в секунду
}
// Главный цикл программы
void loop() {
// Проверяем, есть ли очереди COM порта входящие данные
if (Serial.available() > 0) {
int command = Serial.read(); // считываем значение из порта
if ('1' ==command){ //Если получена цифра "1"
digitalWrite(pinOut, 1); // Отправить логическую единицу (+5В) на пин А1
Serial.println("LED is ON"); //Отправить сообщение в COM порт
}else if ('0'==command){ //Если получена цифра "0"
digitalWrite(pinOut, 0); // Отправить логический ноль (0В) на на пин А1
Serial.println("LED is OFF"); //Отправить сообщение в COM порт
}
}
}
Green ++ )
Неактивний
У Вас 2 лупа и 2 сетупа.) Уберите по одному. "Только гляди не перепутай, Кутузов!"
Теперь такая ошибка:
exit status 1
expected unqualified-id before 'if'
ОК.
Обычно думаешь, вот подскажу, минута делов - глядишь, помогу, сдвину. А там... болото.(
И что поражает - знаний то не нужно много, зачастую примитивщина на уровне физики 8-го класса.(
И, к тому же, Гугль есть - это ведь не то что раньше.) Понять сложно...((
Неактивний
Сторінки 1