Доброго всем времени! Подскажите, пожалуйста, возможно ли на ESP8266 реализовать i2c интерфейс, или на подобном wi-fi модуле? Спасибо.
Ничего подобного не получается. Я не просил ни кого решать мои задачи и цели, единственный момент который меня интересует - реализация i2c на esp8266, например возможно ли работать с дисплеем 20х4 символа. nodemcu меня не интересует, собираюсь прошивать из arduino ide, и если для той же ардуино это wire, то как быть с esp - будет ли работать стандартная библиотека и т.п.
Всем доброго времени суток,есть esp12e работаю через ардуино компилятор,хочу сделать передачу данных с Pic18f46k22 в роли мастера на esp12e в роли slave,возможно ли это? Ибо esp12 имеет i2c, но не знаю сможет ли быть в роли slave,за рание огромное спасибо
nodemcu прекрасно работает с компилятором ардуино все примеры все работает ноги только по другому я и часы делал по i2c с обновлением с интернета по wi-fi и дисплей подключал 20х4
я знаю,но он как мастер работает,а мне нужно в режиме slave,хотел узнать возможно ли это,а вы подключали дисплей в режиме мастера.
Подскажите: Код ардуино Код (C++): #include <Wire.h> #include <iarduino_I2C_connect.h> iarduino_I2C_connect I2C2; const byte PIN_Potentiometer = 0; int VAR_Potentiometer = 0; byte REG_Massive[3]; void setup(){ Wire.begin(0x02); I2C2.begin(REG_Massive); } void loop(){ VAR_Potentiometer = analogRead(PIN_Potentiometer); REG_Massive[1] = VAR_Potentiometer>>8; REG_Massive[2] = VAR_Potentiometer; //Почему значение потенциометра содержит 2 байта? } Код nodemcu lua Код (C++): id=0 sda=2--Uno A4--Node D2--IO4 scl=1--Uno A5--Node D1--IO5 i2c.setup(id, sda, scl, i2c.SLOW) function read_reg(dev_addr, reg_addr) i2c.start(id) i2c.address(id, dev_addr, i2c.TRANSMITTER) i2c.write(id, reg_addr) i2c.stop(id) i2c.start(id) i2c.address(id, dev_addr, i2c.RECEIVER) c = i2c.read(id, 1) i2c.stop(id) return c end -- get content of register 0xAA of device 0x77 reg = read_reg(0x2, 0x02) print(string.byte(reg)) В итоге получаю числа от 0 до 255 Как мне получить то,что отсылает ардуино (0-1023)
Разобрался. Взял за основу пример Код (C++): // Wire Slave Sender // by Nicholas Zambetti <http://www.zambetti.com> // Demonstrates use of the Wire library // Sends data as an I2C/TWI slave device // Refer to the "Wire Master Reader" example for use with this // Created 29 March 2006 // This example code is in the public domain. #include <Wire.h> void setup() { Wire.begin(8); // join i2c bus with address #8 Wire.onRequest(requestEvent); // register event } void loop() { delay(100); } // function that executes whenever data is requested by master // this function is registered as an event, see setup() void requestEvent() { Wire.write("hello "); // respond with message of 6 bytes // as expected by master } И код LUA Код (C++): id=0 sda=2--Uno A4--Node D2--IO4 scl=1--Uno A5--Node D1--IO5 i2c.setup(id, sda, scl, i2c.SLOW) function read_reg(dev_addr) i2c.start(id) i2c.address(id, dev_addr, i2c.RECEIVER) c = i2c.read(id, 6) i2c.stop(id) return c end -- get content of register 0xAA of device 0x77 tmr.alarm(0, 1000, 1, function() reg = read_reg(0x08, 0x02) print(c) end )
Хотел отправить показания потенциометра, получаю: Код (C++): int Potentiometer = 0; #include <Wire.h> void setup() { Wire.begin(8); Wire.onRequest(requestEvent); } void loop() { delay(100); } void requestEvent() { Potentiometer = analogRead(0); char q="Privet"; //Wire.write(Potentiometer); //Получаю //|яяяяя //"яяяяя //}яяяяя //}яяяяя //Џяяяяя //Wire.write("Privet");//Получаю Privet Wire.write("123456");//Получаю 123456 //Wire.write(q);//Получаю яяяяя }
Или (из примера) Код (C++): byte x = 0; Wire.write("x is "); // sends five bytes Wire.write(x); // sends one byte x=++; Получаю: x is яяя x is яяя x is яяя x is яяя x is яяя x is яяя x is !яяя x is "яяя x is #яяя x is $яяя x is %яяя x is &яяя
Код (C++): //char*text="error"; //String data="123456"; Potentiometer = analogRead(0); String data = String(Potentiometer, DEC); Wire.write(data.c_str()); Получилось.