Тема: Вкл\Выкл подсветки LCD1602 методом прерывания.
Всем Добрейшего! Выручайте, Нужно прерыванием Вкл\Выкл подсветку у LCD1602. Моя реализация с помощью одного человека не работает, выдает ошибку:
Arduino: 1.8.1 (Windows 10), Плата:"Arduino/Genuino Uno"
Meteo_RX_1:51: error: expected constructor, destructor, or type conversion before ';' token
prerivanie()
^
C:\Users\Efendis\AppData\Local\Temp\arduino_modified_sketch_641307\Meteo_RX_1.ino: In function 'void setup()':
Meteo_RX_1:48: error: 'prerivanie' was not declared in this scope
attachInterrupt(0, prerivanie, CHANGE);
^
C:\Users\Efendis\AppData\Local\Temp\arduino_modified_sketch_641307\Meteo_RX_1.ino: In function 'int prerivanie()':
Meteo_RX_1:53: error: expected ')' before 'lcd'
if (digitalRead(2) lcd.backlight();
^
C:\Users\Efendis\AppData\Local\Temp\arduino_modified_sketch_641307\Meteo_RX_1.ino: At global scope:
Meteo_RX_1:56: error: expected unqualified-id before '{' token
{
^
exit status 1
expected constructor, destructor, or type conversion before ';' token
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
#include <SPI.h> // Библиотека для работы с шиной SPI
#include "nRF24L01.h" // Библиотека радиомодуля
#include "RF24.h" // Ещё библиотека радиомодуля
#include <Wire.h> // Подключаем библиотеку для работы с I2C-устройствами
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с модулем LCD1602_I2C
#include <BMP085.h>
//************************************************************************************************************************************************
// Битовая маска символа
byte temp_cel[8] =
{
0b00000,
0b01000,
0b10100,
0b01000,
0b00011,
0b00010,
0b00011,
};
byte mmHg[8] =
{
B00000,
B00100,
B00110,
B00100,
B00100,
B01110,
B01110,
};
//***********************************************************************************************************************************************
BMP085 dps = BMP085(); // Устанавливаем датчик давления
LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей
long Temperature = 0, Pressure = 0; // Создаем переменные для хранения температуры и давления из BMP185
float temp0, temp1; // Создаем переменные для хранения температуры
float data[2]; // Создаем колическо ячеек хранения данных
RF24 radio(9, 10); // Создаем модуль на пинах 9 и 10 Для Уно
byte wachdog = 0;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; // Возможные номера труб
void setup()
{
attachInterrupt(0, prerivanie, CHANGE);
}
prerivanie()
{
if (digitalRead(2) lcd.backlight();
else lcd.noBacklight();
}
{
Wire.begin(); // Включаем работу с I2C-устройствами
dps.init(); // Инициализируем датчик давления
lcd.init(); // Инициализируем дисплей
lcd.clear();
lcd.createChar(1, temp_cel); // Создаем символ под номером 1 температуры
lcd.createChar(2, mmHg); // Создаем символ под номером 2 давление
radio.begin(); // Активируем nRF24L01 модуль
radio.setAutoAck(1); // Режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); // Время между попыткой достучаться, число попыток
radio.enableAckPayload(); // Разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); // Размер пакета, в байтах
radio.openReadingPipe(1, address[0]); // Хотим слушать трубу 0
radio.setChannel(0x60); // Выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); // Уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); // Скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS //должна быть одинакова на приёмнике и передатчике! при самой низкой скорости имеем самую высокую чувствительность и дальность!!
radio.powerUp(); // Включаем (начинаем) nRF24L01 работу
radio.startListening(); // Начинаем слушать эфир, мы приёмный модуль
}
void loop()
{
byte pipeNo;
while ( radio.available(&pipeNo)) // Слушаем эфир со всех труб
{
wachdog = 0;
radio.read( &data, sizeof(data) ); // Чиатем входящий сигнал
}
{
temp0 = data[0];
temp1 = data[1];
}
wachdog++;
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
lcd.setCursor(0, 0);
lcd.print(Temperature * 0.1, 1);
lcd.print("\1");
lcd.print(" ");
lcd.setCursor(10, 0);
lcd.print(Pressure / 133.3, 1);
lcd.print("\2");
lcd.setCursor(0, 1);
lcd.print(temp0, 1);
lcd.print("\1");
lcd.print(" ");
lcd.setCursor(11, 1);
lcd.print(temp1, 1);
lcd.print("\1");
lcd.print(" ");
if (wachdog >= 4)
{
lcd.setCursor(0, 1);
lcd.print(" ");
}
delay(15000);
}