Перейти к содержанию

Nikita kozlovtcev

Members
  • Постов

    4
  • Зарегистрирован

  • Посещение

Достижения Nikita kozlovtcev

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Так то на асемблере запускал. А на си не писал раньше, из за этого и проблемы.
  2. Буду пробовать, вы думаете это из за кривого компилятора?
  3. Есть задача, опрашивать несколько ардуино по I2C с целью вывести полученное на дисплей. Рабочий код прикладываю, подсоединял по мануалу пробовал подтягивать SCL и SDA резисторами на 1,5кОм. Вопрос в следующем. Почему то поле некоторого времени слейв перестает определятся. Скан видит любую перефирию I2C кроме ардуинки Код (C++): Код мастера #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x26,16,2); #include <Wire.h> char co = 0 ; void setup() { Wire.begin(); // join i2c bus (address optional for master) lcd.init(); lcd.backlight(); Serial.begin(9600); } void loop() { Wire.requestFrom(0x10, 4,true); lcd.setCursor(0,0); while (Wire.available()) { co = Wire.read(); Serial.print(co); lcd.print(co); } delay(200); Serial.print(" "); Wire.requestFrom(0x10, 7,true); // request 6 bytes from slave device #8 lcd.setCursor(4,0); while (Wire.available()) { co = Wire.read(); Serial.print(co); lcd.print(co); } Serial.print("\n"); delay(200); lcd.clear(); } Код (C++): Код слейва 01 #include <Wire.h> 02 03 byte stat = true; 04 05 char c[4] = {'N','O',' ',' '}; 06 float x = 322.345; 07 void setup() { 08 Wire.begin(0x10); 09 pinMode(13, OUTPUT); 10 Serial.begin(9600); 11 Wire.onRequest(requestEvent); 12 } 13 14 void loop() { 15 digitalWrite(13, LOW); 16 delay(100); 17 18 } 19 20 void requestEvent() { 21 if (stat == true) 22 { 23 24 Wire.write(c,sizeof c); 25 stat = false; 26 }else 27 { 28 char outstr[7]; 29 dtostrf(x,7, 3, outstr); 30 Wire.write(outstr,sizeof outstr); 31 stat = true; 32 } 33 digitalWrite(13, HIGH); 34 35 36 37 38 }
×
×
  • Создать...