Нужна помощь! Хочется сделать вот это Но не могу понять как. То что в коментариях к видео разобрать тоже не получается. Экран такойже как на видео, лазер и фоторезистор тоже есть пока получилось сделать только так: #include <OLED_I2C.h> // Подключаем библиотеку OLED_I2C для работы со шрифтами и графикой OLED myOLED(A4, A5, A4); // Определяем пины I2C интерфейса: UNO и NANO -- SDA - пин A4, SCL - пин A5; MEGA -- SDA - пин 20, SCL - пин 21 extern uint8_t RusFont[]; // Подключаем русский шрифт extern uint8_t SmallFont[]; int ldr = 0; void setup() { myOLED.begin(); } void loop(){ if (analogRead(ldr) < 1000){ myOLED.clrScr(); // Стираем все с экрана myOLED.setFont(RusFont); // Инициализируем русский шрифт myOLED.print("ntvyj", CENTER, 0); // Выводим надпись "Русский язык" myOLED.setFont(SmallFont); // Инициализируем латинский шрифт myOLED.update(); // Обновляем информацию на дисплее // Пауза 3 секунды } else { myOLED.clrScr(); // Стираем все с экрана myOLED.setFont(RusFont); // Инициализируем русский шрифт myOLED.print("cdtnkj", CENTER, 0); // Выводим надпись "Русский язык" myOLED.setFont(SmallFont); // Инициализируем латинский шрифт myOLED.update(); // Обновляем информацию на дисплее // Пауза 3 секунды } } Этот код позволяет только выводить на экран слова "темно" и "светло" при прерывании и наведении лазера на фоторезистор. Хотелось бы сделать счетчик количества прерваний луча света на фоторезистор. В дальнейшем также хотелось бы запускать таймер по поподанию луча света на фоторезистор и остановка таймера по прерыванию. Помогите знающие! Спасибо!
Вроде переменную ldr вы не используйте Добавь, что то вроде: Код (C++): if (analogRead(ldr) < 1000){ ldr++ Потом выводите значение переменной.
Код (C++): 01 #include <OLED_I2C.h> // Подключаем библиотеку OLED_I2C для работы со шрифтами и графикой 02 OLED myOLED(A4, A5, A4); // Определяем пины I2C интерфейса: UNO и NANO -- SDA - пин A4, SCL - пин A5; MEGA -- SDA - пин 20, SCL - пин 21 03 extern uint8_t RusFont[]; // Подключаем русский шрифт 04 extern uint8_t SmallFont[]; 05 int ldr = 0; 06 08 void setup() 09 { 10 myOLED.begin(); 11 } 12 void loop() { 13 if (analogRead(ldr) < 1000) { 14 myOLED.clrScr(); // Стираем все с экрана 15 myOLED.setFont(RusFont); // Инициализируем русский шрифт 16 myOLED.print("ntvyj", CENTER, 0); // Выводим надпись "Русский язык" 17 myOLED.setFont(SmallFont); // Инициализируем латинский шрифт 18 myOLED.update(); // Обновляем информацию на дисплее 19 // Пауза 3 секунды 20 } 21 else 22 { 23 ldr++; 24 myOLED.clrScr(); // Стираем все с экрана 25 myOLED.setFont(RusFont); // Инициализируем русский шрифт 26 myOLED.print("cdtnkj", CENTER, 0); // Выводим надпись "Русский язык" 27 myOLED.setFont(SmallFont); // Инициализируем латинский шрифт 28 31 myOLED.print(ldr, CENTER, 1); // Выводим надпись "Русский язык" 32 33 34 myOLED.update(); // Обновляем информацию на дисплее 35 // Пауза 3 секунды 36 } 37 }
Судя по всему проблема здесь Код (C++): myOLED.print(ldr, CENTER, 1); Надо Код (C++): myOLED.print(String(ldr), CENTER, 1);