In this project we will be detecting the colour of 3 different Mega Blok colours (Red, Yellow and Green). We will be using an Arduino UNO connected to 2 LEDs (one Yellow and one Red LED) as light detectors, and an RGB LED to illuminate the subject. We will use a Photocell to account for varying ambient light levels.
The signals from the LED light sensors will be sent to a Processing.org program via a Serial command. The computer program will make use of my Neural Network to classify the pattern of results and hopefully provide the correct colour "answer". The program should change the colour of the computer screen background to coincide with the colour of the Mega Blok.
The Video
Parts Required:
Arduino UNO...........x1
Red LED .................x1
Yellow LED.............x1
330 Ohm resistors... x 5 (for the LEDs)
Photocell .................x1
10K Ohm resistor....x1 (for the Photocell)
Around 11 wires and a Breadboard (or two) to put it all together
/* Define the pin for the PhotoResistor */ #define PhotoR_Pin 0
/* Define the pins for the Red LED Sensor */ #define Red_LED_Sensor_POS 4 #define Red_LED_Sensor_NEG 5
/* Define the pins for the Yellow LED Sensor */ #define Yellow_LED_Sensor_POS 7 #define Yellow_LED_Sensor_NEG 8
/* Define the pin for the RGB LED torch */ #define RGB_LED_RedPin 11 #define RGB_LED_GreenPin 10 #define RGB_LED_BluePin 9
/* Controls the brightness of the RGB LED */ int intensity=255;
/* Define the maximum cycles/time allowed for each LED to capture light */ long max_darkness=80000;
voidsetup(){ /* Setup the RED LED Sensor */ pinMode(Red_LED_Sensor_POS,OUTPUT); digitalWrite(Red_LED_Sensor_POS,LOW);
/* Setup the YELLOW LED Sensor */ pinMode(Yellow_LED_Sensor_POS,OUTPUT); digitalWrite(Yellow_LED_Sensor_POS,LOW);
/* No need to setup the RGB LED Pins */
/* Turn on Serial Protocol */ Serial.begin(9600); }
voidloop() { byte byteRead;
/* check if data has been sent from the computer: */ if (Serial.available()) {
/* read the most recent byte (which will be from 0 to 255): */ byteRead = Serial.read();
if(byteRead==0){
/* Turn off if the byte Read was 0 */ set_RGB_LED(0,0,0,false);
}else{
/* set the brightness of the LED and then take readings: */ set_RGB_LED(0,0,0,false); photoR_Read(); set_RGB_LED(0,0,0,true); set_RGB_LED(intensity,0,0,true); set_RGB_LED(0,intensity,0,true); set_RGB_LED(0,0,intensity,true); } } }
/* Print the Ambient light level to the serial port */ Serial.println(ambiLight); }
void set_RGB_LED(int redInt, int greenInt, int blueInt, boolean takeReadings ){ /* set the brightness and colour of the RGB LED: */ analogWrite(RGB_LED_RedPin, redInt); analogWrite(RGB_LED_GreenPin, greenInt); analogWrite(RGB_LED_BluePin, blueInt);
/* If takeReadings is true - then take Readings. */ if(takeReadings){
/* Read the amount of Yellow light */ read_LED('Y', Yellow_LED_Sensor_NEG);
/* Read the amount of Red light */ read_LED('R', Red_LED_Sensor_NEG); } }
void read_LED(char LED_Colour, int LED_Pin){
/* Charge the LED by applying voltage in the opposite direction */ pinMode(LED_Pin,OUTPUT); digitalWrite(LED_Pin,HIGH);
/* Read the amount of Light coming into the LED sensor */ long darkness=0; int lightLevel=0; pinMode(LED_Pin,INPUT); digitalWrite(LED_Pin,LOW);
Make sure to select "Source Code" when you get there: (as displayed below)
If you have any problems with accessing the code - please let me know in the comments section of this blog.
This sketch utilises a simple feed forward Neural Network (that I developed from scratch). For more detailed information about this neural network please navigate through my previous blog postings.
So there you go, a simple idea, a simple outcome, and a lot of "stuff" happening in the background. I am sorry. This project is not basic, but hopefully someone out there will get some use out of it.
Have you ever wondered if there was a way to store and retrieve data from a USB stick with an Arduino UNO? Most people choose SD cards to store their project data, but you may be surprised there IS a way! IC Station have a nice little module which allows you store and retrieve your Arduino (or other MCU) project data to a USB stick. I am not too sure why USB storage is not widely used in Arduino projects? These modules are not expensive, they have been around for quite a while, and are relatively simple to use. You do not need any libraries to get them to work, however, I must say that documentation for this module is not that easy to find. This site and this document proved to be very useful in my endevour to get this module working, and I hope my tutorial below will help you get started and bridge some of the information gaps. The...
Guest Post Disclaimer This is a guest post by the EasyEDA team. I would like to thank EasyEDA for providing this tutorial for everyone to enjoy. All information within this post was provided by EasyEDA. Description None of us could deny the fact that we would love with to play with LED’s and lighting stuff. I love to play with LED’s and create attractive lighting effects. This project was a result of such an attempt where I created a stunning RGB light effect using the popular development platform Arduino Nano. Let’s see the circuit, code and instruction on building this project: Parts Required: An EasyEDA account (free) Arduino Nano (or compatible board) LED strip Dupont wire connectors Custom control board Image source: EasyEDA Ardui...
FIVE MINUTE TUTORIAL Project Description: Sending Hex values to an Arduino UNO This simple tutorial will show you how to send Hexadecimal values from a computer to an Arduino Uno. The "Processing" programming language will be used to send the HEX values from the computer when a mouse button is pressed. The Arduino will use these values to adjust the brightness of an LED. Learning Objectives To Send Hexadecimal (Hex) values from a computer to the Arduino Trigger an action based on the press of a mouse button Learn to create a simple Computer to Arduino interface Use Arduino's PWM capabilities to adjust brightness of an LED Learn to use Arduino's analogWrite() function Create a simple LED circuit...
Comments
Post a Comment