0 голосов

Здравствуйте, пытаюсь подключить i2c дисплей и амперковские часы реального времени

Заливаю код

PrimaryI2C.setup({sda: SDA, scl: SCL});
var lcd = require("HD44780").connectI2C(PrimaryI2C, 0x38);
PrimaryI2C.writeTo(0x38, 0x08);
 var rtc = require('@amperka/rtc').connect(PrimaryI2C);
rtc.setTime();

var dht = require("DHT11").connect(P4);
var oneWire = new OneWire(P12);
var sensor = require("DS18B20").connect(oneWire);

var temp_air;
var vlaz_air;
rtc.setTime();
//lcd 48A?;59


lcd.write(0b101010, 1);

//@01>B0 48A?;5O
setInterval(function(){
  var date = rtc.getTime();
  var seconds = date.getSeconds();  // !5:C=4K
  var minutes = date.getMinutes();
	var temp_gnd = sensor.getTemp().toFixed(1);
  //AG8BK20=85  0
  dht.read(function(a){
	temp_air = a.temp.toString();
    vlaz_air = a.rh.toString();
});
	var vlaz_gnd = analogRead(A0).toFixed(3) * 100;
	

	lcd.setCursor(0, 0);
	lcd.print("Temp_GND:" + temp_gnd + "\xB0" + "C");
	lcd.setCursor(0, 1);
	lcd.print("Temp_AIR:" + temp_air + "\xB0" + "C      ");
	lcd.setCursor(0, 2);
	lcd.print("Hr_GND:" + vlaz_gnd + "%");
	lcd.setCursor(0, 3);
	lcd.print("Hr_AIR:" + vlaz_air + "%");
  lcd.setCursor(12, 3);
	lcd.print(minutes +':' + seconds);
}, 7000);

выдает ошибку

Uncaught InternalError: Timeout on I2C Write Transmit Mode 2
 at line 1 col 52
...i2c.writeTo(this._address,t),this._i2c.readFrom(this._addres...
                              ^
in function "read" called from line 1 col 20
var t=this.read(0,1)[0];t>>7&&this.write(0,128^t)
                   ^
in function "start" called from line 1 col 133
...is._address=104,this.start()
                              ^
in function "Rtc" called from line 1 col 10
new Rtc(t)
         ^
in function "connect" called from line 266 col 53
var rtc = require('@amperka/rtc').connect(PrimaryI2C);
                                                    ^
Uncaught Error: Cannot read property 'setTime' of undefined
 at line 267 col 4
rtc.setTime();
   ^

Я так понимаю ругается на адреса модулей

Подскажите, как правильно?

(37 баллов) 1 11 13

1 Ответ

0 голосов
залейте код в плату и откройте монитор последовательного порта

Arduino IDE

  #include <Wire.h>

void setup() {
    Wire.begin(); Serial.begin(9600);
  while (!Serial);
 Serial.println(" I2C Scanner");

}

void loop() {
   byte error, address;
     int nDevices;
     nDevices = 0;
    for(address = 8; address < 127; address++ ){
     Wire.beginTransmission(address);
      error = Wire.endTransmission();
    if (error == 0){
    Serial.print("0x");
      if (address<16)
      Serial.print("0");
      Serial.println(address,HEX);
      nDevices++;
     }
    else if (error==4) {
    Serial.print("0x");
    if (address<16)
    Serial.print("0");
    Serial.println(address,HEX);
     }
    }
    if (nDevices == 0)
    Serial.println("No I2C");
   delay(1000);

}
(12 баллов) 4
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...