Вывод данных на экран через I2C
- Войдите на сайт для отправки комментариев
Чт, 03/08/2017 - 23:30
Здравствуйте, уже задавал вопрос на форуме, но все ушло не туда, за это прошу прощения, возникла потребность вывести значение кнопки умного дома на экран, есть функционирующий скетч для вывода данных на монитор порта, необходимо вывести из монитора порта на монитор, стоит отметить,что монитор работает, на скетче "привет мир" себя показывает,как я понимаю, сложность в выводе переменной, так как ее нужно конвертировать, почитал про sprintf , но не понимаю как это подружить с библиотекой, так как переменные описаны там, а я делаю первые шаги в ардуино и программировании
#include <RCSwitch.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(115200);
mySwitch.enableReceive(0); // Receiver on interrupt 0=> подключен к пину 2
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
lcd.print("Unknown encoding");
}
else {
Serial.print("Received ");
Serial.print(mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print(mySwitch.getReceivedBitlength() );
Serial.print("bit, ");
Serial.print("Protocol: ");
Serial.println(mySwitch.getReceivedProtocol() );
}
mySwitch.resetAvailable();
}
}

Кстати эта библиотека для I2C не во всех IDE правильно работает.
а где инициация дисплея в сетапе?
преобразовал значение, но не помогло #include <RCSwitch.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(115200); mySwitch.enableReceive(0); // Receiver on interrupt 0=> подключен к пину 2 } void loop() { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { lcd.print("Unknown encoding"); } else { char buf[255]; sprintf(buf, "Recived %d\/%d bit. Protocol: %d\n", mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedProtocol() ); lcd.setCursor(0, 0); lcd.print(buf); } mySwitch.resetAvailable(); } }вот решение,если кому интересно! #include <RCSwitch.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 16, 2); RCSwitch mySwitch = RCSwitch(); void setup() { lcd.init(); lcd.backlight(); Serial.begin(115200); mySwitch.enableReceive(0); // Receiver on interrupt 0=> подключен к пину 2 } void loop() { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { lcd.setCursor(0, 0); lcd.print("Unknown encoding"); } else { char buf[255]; sprintf(buf, "Rcv %d,%d bit", mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength()); lcd.setCursor(0, 0); lcd.print(buf); sprintf(buf, "Protocol: %d", mySwitch.getReceivedProtocol()); lcd.setCursor(0, 1); lcd.print(buf); mySwitch.resetAvailable(); } } }финал #include <RCSwitch.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 16, 2); RCSwitch mySwitch = RCSwitch(); void setup() { lcd.init(); lcd.backlight(); Serial.begin(115200 ); mySwitch.enableReceive(0); // Receiver on interrupt 0=> подключен к пину 2 } void loop() { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { lcd.setCursor(0, 0); lcd.print("Unknown encoding"); } else { char buf[255]; int val2 = mySwitch.getReceivedBitlength(); sprintf(buf, "Rcv %d,%d bit", value, val2); lcd.setCursor(0, 0); lcd.print(buf); Serial.println(value, DEC); Serial.println(val2, DEC); sprintf(buf, "Protocol: %d", (int)mySwitch.getReceivedProtocol()); lcd.setCursor(0, 1); lcd.print(buf); mySwitch.resetAvailable(); } } }