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


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

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


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

http://www.youtube.com/watch?v=mHP-fk9ooFM

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

// Плата 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);
}

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение