Новый терменвокс

Опыты с оптическим терменвоксом проведённые в рамках подготовки школьной исследовательской работы привели меня к вопросу: Как преобразовать свет в звук? Первую серию опытов я провёл с оптическим терменвоксом. Обнаруженная зависимость между световой и звуковой волной с подвига меня на создание прототипа машинного зрения.
Установка состоит из двух плат Arduino Uno.
Первая работает как оптический терменвокс. Вторая служит управлением LED экраном и отображает информацию о уровне освещённости.

Опыты с разной освещённостью.


Сейчас была реализована способность установки различать различные цвета.

На первом этапе было решено научить машину отличать тёмное от светлого, сейчас же идёт работа по созданию прототипа робота, который смог бы отличать свет светофора и в зависимости от цвета, ехал на зелёный или останавливался на красный.

// Плата LED 
#define LDR_PIN0     A0
// #define LDR_PIN1     A1
// #define LDR_PIN2     A2
#include <LiquidCrystal.h>

// Работа с экраном 
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
 
void setup() 
{
  
}
 
void loop() 
{
  int val0, val1, val2, sum;
  
  // Считываем показатель с фоторезистрора и записываем его в переенную
  val0 = analogRead(LDR_PIN0);
  val1 = analogRead(LDR_PIN1);
  val2 = analogRead(LDR_PIN2);
  
  sum = val0 + val1 + val2;
    // Устанавливаем длину строки и записываем переменную в первую строку 
    lcd.begin(16, 2);
    
    lcd.print(sum);
   // Проверяем только когда датчик в подходящем окружении 
   if (sum > 100 && sum < 1000)
   {
    // Если показатель входит в интервал, значит горят все светодиоды
    if (sum > 367 && sum < 400)
    {
    
    lcd.setCursor(0, 1);
    
    lcd.print("RGB");
    
    }
     

     // Если показатель входит в интервал, значит горит R светодиод
     if (sum > 545 && sum < 585) 
   
    {
      lcd.setCursor(0, 1);
    
    lcd.print("R");
    }
   
     // Если показатель входит в интервал, значит горит G светодиод  
     if (sum > 586 && sum < 620) 
   
    {
      lcd.setCursor(0, 1);
    
    lcd.print("G");
    }
   
   
     // Если показатель входит в интервал, значит горит B светодиод
     if (sum > 621 && sum < 680) 
   
    {
      lcd.setCursor(0, 1);
    
    lcd.print("B");
    }
         // Если показатель входит в интервал, значит горят BG светодиоды
         if (sum > 480 && sum < 520) 
   
    {
      lcd.setCursor(0, 1);
    
    lcd.print("BG");
    }
     // Если показатель входит в интервал, значит горят RB светодиоды
     if (sum > 434 && sum < 441) 
   
    {
      lcd.setCursor(0, 1);
    
    lcd.print("RB");
    }
     // Если показатель входит в интервал, значит горят GB светодиоды
     if (sum > 442 && sum < 460) 
   
    {
      lcd.setCursor(0, 1);
    
    lcd.print("GB");
    }
   
    
   }
   delay(1000);
}

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.