Seleccionador de botellas de plástico y aluminio
Este proyecto lo hice con unos amig@s de la universidad para una materia.
Armado
Para este proyectito necesitamos los siguientes componentes:
- Arduino ADK Mega
- Sensor LDR
- Display 16x2
- Motor DC 12v
- Modulo Bluetooth
- Modulo controlador de motores
Código
#include <AFMotor.h> #include <LiquidCrystal.h> //motor double passos_total = 512; int porta_motor = 2; int angulo = 90; double numero_de_passos = 0; AF_Stepper arduino(passos_total, porta_motor); //motor //LDR #define I8 A8 const int analogInPin = I8; int sensorValue = 0; int outputValue = 0; //LDR //Display const int numRows = 2; const int numCols = 16; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int l=0; int p=0; //Display void setup(){ arduino.setSpeed(10); Serial.begin(9600); lcd.begin(numCols,numRows); } void loop(){ lcd.setCursor(numCols - 16,numRows - 1); lcd.write("Latas: "+ l); lcd.setCursor(numCols - 16,numRows); lcd.write("PET: "+ p); if(SensorLuz() > 20 && SensorLuz() < 100){ l = l + 1; lcd.setCursor(numCols - 16,numRows - 1); lcd.write("Latas: "+ l); CMotoresI(); } if(SensorLuz() > 200 && SensorLuz() < 400){ p = p + 1; lcd.setCursor(numCols - 16,numRows); lcd.write("PET: "+ p); CMotoresD(); } } int SensorLuz(){ sensorValue = analogRead(analogInPin); outputValue = map(sensorValue, 0, 1023, 0, 255); Serial.print("sensor = "); Serial.print(sensorValue); Serial.print("\toutput = "); Serial.println(outputValue); return sensorValue; } void CMotoresI(){ numero_de_passos = angulo / (360 / passos_total); Serial.println(numero_de_passos); //Move o motor. Use FORWARD para sentido horario, //BACKWARD para anti-horario arduino.step(numero_de_passos, FORWARD, SINGLE); arduino.release(); delay(100); } void CMotoresD(){ numero_de_passos = angulo / (360 / passos_total); Serial.println(numero_de_passos); //Move o motor. Use FORWARD para sentido horario, //BACKWARD para anti-horario arduino.step(numero_de_passos, BACKWARD, SINGLE); arduino.release(); delay(100); }
Resultado
Y las fotos :)