Помогите пожалуйста, что я не правильно делаю
- Войдите на сайт для отправки комментариев
Пнд, 16/12/2019 - 21:06
[code] #include <Wire.h> #include <Adafruit_BMP085.h> //библиотека датчика давления Adafruit_BMP085 bmp; float P;// переменная для давления #include <Adafruit_Sensor.h> #include <Adafruit_AM2320.h> AM2320 th; #include <OLED_I2C.h> // библиотека дисплея OLED OLED myOLED(SDA, SCL, 8); // Подключение дисплея hardware SDA , SCL extern uint8_t RusFont[]; // Русский шрифт extern uint8_t MegaNumbers[]; // Подключение больших шрифтов extern uint8_t SmallFont[]; // Базовый шрифт без поддержки русскийх символов. extern uint8_t term[]; // иконка градусника extern uint8_t grad[]; // иконка знака градуса extern uint8_t hum[]; // иконка влажности #include <DS1307.h> // библиотека часов DS1307 rtc(A0, A1); Time t; int x = 0; void setup() { myOLED.begin(); bmp.begin(); myOLED.setFont(RusFont); myOLED.setBrightness(70); // желаемая яркость дисплея от 0 до 250 rtc.halt(false); //rtc.setDOW(WEDNESDAY); // установка часов //rtc.setTime(10, 46, 40); //20 сек на запись //rtc.setDate(18, 5, 2016); // Установим SQW/Out частоту для контроля частотомером //rtc.setSQWRate(SQW_RATE_32K); // на выбор 1Hz, 4K, 8K, 32K //rtc.enableSQW(true); } void loop() { // цикл отображения 6 секунд часы, потом датчики if (x >= 20) { temp(); h(); tem(); dat(); x=0; } else { watch(); } x++; } void watch() { // цикл часов и календаря myOLED.setFont(RusFont); t = rtc.getTime(); switch (t.dow) // рисуем дни недели { case 1: myOLED.print("GJYTLTKMYBR", CENTER, 0); break; case 2: myOLED.print("DNJHYBR", CENTER, 0); break; case 3: myOLED.print("CHTLF", CENTER, 0); break; case 4: myOLED.print("XTNDTHU", CENTER, 0); break; case 5: myOLED.print("GZNYBWF", CENTER, 0); break; case 6: myOLED.print("CE<<JNF", CENTER, 0); break; case 7: myOLED.print("DJCRHTCTYMT", CENTER, 0); break; } // вывод текущего времени на дисплей t = rtc.getTime(); myOLED.setFont(MegaNumbers); myOLED.printNumI(int(t.hour), 4, 12, 2, '0'); myOLED.print("/", 52, 12); myOLED.printNumI(int(t.min), 75, 12, 2, '0'); myOLED.setFont(RusFont); switch (t.mon) // рисуем месяцы { case 1: myOLED.print(String(t.date), 30, 57); myOLED.print("ZYDFHZ", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 2: myOLED.print(String(t.date), 26, 57); myOLED.print("ATDHFKZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; case 3: myOLED.print(String(t.date), 30, 57); myOLED.print("VFHNF", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 4: myOLED.print(String(t.date), 30, 57); myOLED.print("FGHTKZ", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 5: myOLED.print(String(t.date), 36, 57); myOLED.print("VFZ", CENTER, 57); myOLED.print(String(t.year), 82, 57); break; case 6: myOLED.print(String(t.date), 35, 57); myOLED.print("B>YZ", CENTER, 57); myOLED.print(String(t.year), 81, 57); break; case 7: myOLED.print(String(t.date), 35, 57); myOLED.print("B>KZ", CENTER, 57); myOLED.print(String(t.year), 81, 57); break; case 8: myOLED.print(String(t.date), 28, 57); myOLED.print("FDUECNF", CENTER, 57); myOLED.print(String(t.year), 90, 57); break; case 9: myOLED.print(String(t.date), 24, 57); myOLED.print("CTYNZ<HZ", CENTER, 57); myOLED.print(String(t.year), 94, 57); break; case 10: myOLED.print(String(t.date), 26, 57); myOLED.print("JRNZ<HZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; case 11: myOLED.print(String(t.date), 28, 57); myOLED.print("YJZ<HZ", CENTER, 57); myOLED.print(String(t.year), 90, 57); break; case 12: myOLED.print(String(t.date), 26, 57); myOLED.print("LTRF<HZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; } // вывод мигающего двоеточия myOLED.update(); delay(450); myOLED.setFont(MegaNumbers); myOLED.print("-", 51, 12); myOLED.update(); delay(450); } void temp(){ // Выводим на дисплей значения температуры ВМР085 myOLED.clrScr(); myOLED.setFont(RusFont); myOLED.print("NTVGTHFNEHF", CENTER, 0); myOLED.drawBitmap(0, 17, term, 19, 40); myOLED.setFont(MegaNumbers); myOLED.print(String(bmp.readTemperature() , 1), 21, 16); // Вывод значения температуры, с точностью до десятых myOLED.drawBitmap(115, 12, grad, 13, 12); myOLED.update(); delay(4000); // Пауза } void h(){ // Выводим на дисплей значения влажности АМ2320 switch(th.Read()); myOLED.clrScr(); myOLED.setFont(RusFont); myOLED.print("DKF:YJCNM", CENTER, 0); myOLED.drawBitmap(0, 20, hum, 28, 31); myOLED.setFont(MegaNumbers); myOLED.print(String(th.h, 1), 32, 16); // вывод значения влажности myOLED.update(); delay(4000); // Пауза } void tem(){ // Выводим на дисплей значения температуры АМ2320 myOLED.clrScr(); myOLED.setFont(RusFont); myOLED.print("NTVGTHFNEHF", CENTER, 0); myOLED.drawBitmap(0, 17, term, 19, 40); myOLED.setFont(MegaNumbers); myOLED.print(String(th.t, 1), 21, 16); // Вывод значения температуры, с точностью до десятых myOLED.drawBitmap(115, 12, grad, 13, 12); myOLED.update(); delay(4000); // Пауза } void dat(){ // Выводим на дисплей значения атмосферного давления ВМР085 myOLED.clrScr(); myOLED.setFont(RusFont); myOLED.print("LFDKTYBT", CENTER, 0); //myOLED.setFont(SmallFont); //myOLED.print("MM.PT.CT", CENTER, 55); myOLED.setFont(MegaNumbers); P=bmp.readPressure(); // считывем показания P=(float)0.0075*P; // пересчет значения в мм.рт.ст myOLED.print(String(P , 1), CENTER, 16); // Отображение значения давления, с точностью до десятых myOLED.update(); delay(4000); // пауза myOLED.clrScr(); } [/code]
пишет ошибка компиляции для ардуино нано
Прочитать Adafruit_Sensor.h: No such file or directory и перевести на русский слабо?
Установите библиотеку Adafruit_Sensor
вставил,
теперь ошибка 'class Adafruit_AM2320' has no member named 'Read'
Библиотеку установили, теперь, чтобы знать как с ней обращаться, посмотрите примеры к ней, ну или собственно сам файл Adafruit_Sensor.h
Если компилятор говорит, что нет там никакого Read, значит нет. Что-то другое есть.