Счетчик прерывания света на фоторезисторе

Тема в разделе "Arduino & Shields", создана пользователем markelovdn, 10 фев 2017.

  1. markelovdn

    markelovdn Нуб

    Нужна помощь!

    Хочется сделать вот это



    Но не могу понять как.

    То что в коментариях к видео разобрать тоже не получается.

    Экран такойже как на видео, лазер и фоторезистор тоже есть пока получилось сделать только так:

    #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 секунды
    }
    }

    Этот код позволяет только выводить на экран слова "темно" и "светло" при прерывании и наведении лазера на фоторезистор.
    Хотелось бы сделать счетчик количества прерваний луча света на фоторезистор.
    В дальнейшем также хотелось бы запускать таймер по поподанию луча света на фоторезистор и остановка таймера по прерыванию.
    Помогите знающие!
    Спасибо!
     
  2. REm

    REm Гик

    циклы знаешь как делать?
    в коде нет паузы, только комментарий на неё.
     
  3. serg_admin

    serg_admin Гик

    Вроде переменную ldr вы не используйте
    Добавь, что то вроде:
    Код (C++):
    if (analogRead(ldr) < 1000){
    ldr++
    Потом выводите значение переменной.
     
  4. markelovdn

    markelovdn Нуб

    Подобное пробовал делать скетч не компилируется выдает ошибку типов данных.
     
  5. serg_admin

    serg_admin Гик

    А код можно глянуть?
     
  6. markelovdn

    markelovdn Нуб

    Код (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
    }
     
     
  7. serg_admin

    serg_admin Гик

    Судя по всему проблема здесь
    Код (C++):
    myOLED.print(ldr, CENTER, 1);
    Надо
    Код (C++):
    myOLED.print(String(ldr), CENTER, 1);