Kit de batería para niños pequeños – Proyecto PCL 1 – Grupo 3

Este juguete se compone de 4 botones, 4 LED, 5 potenciómetros y 1 altavoz. Los niños pequeños pueden girar, deslizarse y empujar para cambiar las luces y los sonidos.

Componentes y suministros

11026 02
Alambres de unión (genérico)
× 60
12757 01
Tablero rojo SparkFun
× 1
12002 04
Protoboard (genérico)
× 2
09939 01
Potenciómetro giratorio (genérico)
× 4
Ph a000066 iso (1) ztbmubhmho
Arduino UNO
× 1
Botón SparkFun
× 4
Industrias adafruit ada1536 imagen
Alarma sonora
× 1
Botones SparkFun
× 4
08377 02 l
resistencia de 330 ohmios
× dieciséis
09264 1
Cátodo común difuso RGB
× 4

Herramientas y máquinas necesarias.

09507 01
Soldador (genérico)

Aplicaciones y servicios en línea

idea web
IDE de Arduino

Acerca de este proyecto

Visión

En este proyecto construimos un juguete infantil compuesto por potenciómetros, botones, luces y sonidos. Comenzamos investigando de qué son capaces los niños pequeños y qué juguetes hay actualmente en el mercado.

Inspiración

Nos inspiramos en otros juguetes para hacer música en el mercado, así como en las tarjetas de sonido de DJ. Agregamos LED RGB y diferentes potenciómetros para que el nuestro sea más interactivo.

Dibujos y bocetos

Para diseñar nuestro proyecto, usamos Tinkercad para ayudarnos a cablear y probar el código. Mientras conectábamos nuestro proyecto, notamos que no había suficientes pines en una placa roja de Sparkfun para todos nuestros componentes. No teníamos el presupuesto para comprar una placa más grande, así que decidimos usar una placa para los LED y los potenciómetros y otra para los botones y el sonido.

Prototipos

Mientras esperábamos a que llegaran los materiales, trabajamos y probamos nuestro código.

Reparar

La parte más difícil de este proyecto fue la edición. Después de soldar los cables a todos nuestros componentes, descubrimos que era difícil asegurarnos de que todos los cables estuvieran conectados.

Una vez que todo se movió al contenedor, la olla deslizante ya no funcionó. No tuvimos tiempo de arreglarlo, así que decidimos eliminarlo de nuestro proyecto. Si tuviéramos que rehacer este proyecto, agregaríamos el potenciómetro deslizante y lo usaríamos para cambiar el tono de los botones.

Producto terminado

Nuestro juguete final consistió en 4 potenciómetros de perilla, 4 LED RGB, 4 botones y 1 zumbador piezoeléctrico. Los potenciómetros controlan el color del LED correspondiente y cada perilla produce un tono diferente.

lo que aprendimos

Cometimos el error de pedir LED de ánodo común, a través de este error aprendimos la diferencia entre ánodo común y cátodo común.

  • Un LED de ánodo común RGB debe tener su pata más larga (pata 2) conectada al pin de 5 V de su Arduino (sumidero de corriente)
  • Un LED de cátodo común RGB debe tener su pata más larga (pata 2) conectada al pin de tierra de su Arduino (fuente de corriente)

Todo lo que cambiaríamos la próxima vez

Nos dimos cuenta demasiado tarde de que nuestro Sparkfun Redboard no tenía suficientes pines para todos nuestros componentes. Para resolver este problema, usamos Sparkfun Redboard para los botones y el piezo, y un Arduino UNO para los potenciómetros y los LED. Si tuviéramos que rehacer este proyecto, usaríamos un microcontrolador diferente con más pines

También agregaríamos el potenciómetro deslizante que teníamos la intención de agregar, pero no tuvimos tiempo de hacerlo. El potenciómetro deslizante podría usarse para cambiar el tono de los botones.

codificado

Luces y potenciómetros de perillaC/C++
Usado con Arduino Uno
//LED Code for Uno

const int analogPin = A0;//the analog input pin attach to analog pin A0
const int LEDRed = 11;//the led attach to pin 9
const int LEDGreen = 13;
const int LEDBlue = 12;
int inputValue = 0;//variable to store the value coming from sensor
int outputValue = 0;//variable to store the output value

const int analogPin2 = A1;//the analog input pin attach to analog pin A0
const int LEDRed2 = 8;//the led attach to pin 9
const int LEDGreen2 = 10;
const int LEDBlue2 = 9;
int inputValue2 = 0;//variable to store the value coming from sensor
int outputValue2 = 0;//variable to store the output value


const int analogPin3 = A2;//the analog input pin attach to analog pin A0
const int LEDRed3 = 5;//the led attach to pin 9
const int LEDGreen3= 7;
const int LEDBlue3 = 6;
int inputValue3 = 0;//variable to store the value coming from sensor
int outputValue3 = 0;//variable to store the output value


const int analogPin4 = A3;//the analog input pin attach to analog pin A0
const int LEDRed4 = 2;//the led attach to pin 9
const int LEDGreen4 = 4;
const int LEDBlue4 = 3;
int inputValue4 = 0;//variable to store the value coming from sensor
int outputValue4 = 0;//variable to store the output value


void setup(){
  Serial.begin(9600);
  pinMode(LEDRed,OUTPUT);
  pinMode(LEDGreen,OUTPUT);
  pinMode(LEDBlue,OUTPUT);  

  pinMode(LEDRed2,OUTPUT);
  pinMode(LEDGreen2,OUTPUT);
  pinMode(LEDBlue2,OUTPUT);  
  
  pinMode(LEDRed3,OUTPUT);
  pinMode(LEDGreen3,OUTPUT);
  pinMode(LEDBlue3,OUTPUT); 
  
  pinMode(LEDRed4,OUTPUT);
  pinMode(LEDGreen4,OUTPUT);
  pinMode(LEDBlue4,OUTPUT); 
}

void loop(){

  /////////////1//////////////
  inputValue = analogRead(analogPin);//read the value from the sensor
outputValue = map(inputValue,0,1023,0,255);//Convert from 0-1023 proportional to the number of a number of from 0 to 255
 
if (outputValue < 100) //red
  {
  analogWrite(LEDRed,255);
   analogWrite(LEDGreen,0);
   analogWrite(LEDBlue,0); 
  }
  else if (outputValue < 110)//red orange
  {
   analogWrite(LEDRed,255);
   analogWrite(LEDGreen,60);
   analogWrite(LEDBlue,0); 
  }
  else if (outputValue < 120)//orange
  {
   analogWrite(LEDRed,255);
   analogWrite(LEDGreen,123);
   analogWrite(LEDBlue,0); 
  }
  else if (outputValue < 130)//orange yellow
  {
   analogWrite(LEDRed,255);
   analogWrite(LEDGreen,180);
   analogWrite(LEDBlue,0); 
  }
  else if (outputValue < 140)//yellow
  {
   analogWrite(LEDRed,255);
   analogWrite(LEDGreen,246);
   analogWrite(LEDBlue,0);
  }
  else if (outputValue < 150)//yellow green
  {
   analogWrite(LEDRed,220);
   analogWrite(LEDGreen,244);
   analogWrite(LEDBlue,66);
  }
  else if (outputValue < 160)//green
  {
    analogWrite(LEDRed,0);
   analogWrite(LEDGreen,255);
   analogWrite(LEDBlue,0);
  }
  else if (outputValue < 170)//green blue
  {
    analogWrite(LEDRed,66);
   analogWrite(LEDGreen,244);
   analogWrite(LEDBlue,161);
  }
  else if (outputValue < 180)//blue
  {
   analogWrite(LEDRed,0);
   analogWrite(LEDGreen,255);
   analogWrite(LEDBlue,250);
  }
   else if (outputValue < 190)//blue cyan
  {
   analogWrite(LEDRed,66);
   analogWrite(LEDGreen,164);
   analogWrite(LEDBlue,244);
  }
  else if (outputValue < 200)//cyan
  {
   analogWrite(LEDRed,0);
   analogWrite(LEDGreen,0);
   analogWrite(LEDBlue,255);
  }
   else if (outputValue < 210)//cyan purple
  {
   analogWrite(LEDRed,140);
   analogWrite(LEDGreen,66);
   analogWrite(LEDBlue,255);
  }
  else if (outputValue < 220)//purple
  {
   analogWrite(LEDRed,182);
   analogWrite(LEDGreen,0);
   analogWrite(LEDBlue,255);
  }
  else if (outputValue < 230)//pink purple
  {
   analogWrite(LEDRed,219);
   analogWrite(LEDGreen,0);
   analogWrite(LEDBlue,225);
  }
  else if (outputValue < 240)//pink 
  {
   analogWrite(LEDRed,255);
   analogWrite(LEDGreen,0);
   analogWrite(LEDBlue,208);
  }
  
/////////////2//////////////
inputValue2 = analogRead(analogPin2);//read the value from the sensor
outputValue2 = map(inputValue2,0,1023,0,255);//Convert from 0-1023 proportional to the number of a number of from 0 to 255

 if (outputValue2 < 100) //red
  {
  analogWrite(LEDRed2,255);
   analogWrite(LEDGreen2,0);
   analogWrite(LEDBlue2,0); 
  }
  else if (outputValue2 < 110)//red orange
  {
   analogWrite(LEDRed2,255);
   analogWrite(LEDGreen2,60);
   analogWrite(LEDBlue2,0); 
  }
  else if (outputValue2 < 120)//orange
  {
   analogWrite(LEDRed2,255);
   analogWrite(LEDGreen2,123);
   analogWrite(LEDBlue2,0); 
  }
  else if (outputValue2 < 130)//orange yellow
  {
   analogWrite(LEDRed2,255);
   analogWrite(LEDGreen2,180);
   analogWrite(LEDBlue2,0); 
  }
  else if (outputValue2 < 140)//yellow
  {
   analogWrite(LEDRed2,255);
   analogWrite(LEDGreen2,246);
   analogWrite(LEDBlue2,0);
  }
  else if (outputValue2 < 150)//yellow green
  {
   analogWrite(LEDRed2,220);
   analogWrite(LEDGreen2,244);
   analogWrite(LEDBlue2,66);
  }
  else if (outputValue2 < 160)//green
  {
    analogWrite(LEDRed2,0);
   analogWrite(LEDGreen2,255);
   analogWrite(LEDBlue2,0);
  }
  else if (outputValue2 < 170)//green blue
  {
    analogWrite(LEDRed2,66);
   analogWrite(LEDGreen2,244);
   analogWrite(LEDBlue2,161);
  }
  else if (outputValue2 < 180)//blue
  {
   analogWrite(LEDRed2,0);
   analogWrite(LEDGreen2,255);
   analogWrite(LEDBlue2,250);
  }
   else if (outputValue2 < 190)//blue cyan
  {
   analogWrite(LEDRed2,66);
   analogWrite(LEDGreen2,164);
   analogWrite(LEDBlue2,244);
  }
  else if (outputValue2 < 200)//cyan
  {
   analogWrite(LEDRed2,0);
   analogWrite(LEDGreen2,0);
   analogWrite(LEDBlue2,255);
  }
   else if (outputValue2 < 210)//cyan purple
  {
   analogWrite(LEDRed2,140);
   analogWrite(LEDGreen2,66);
   analogWrite(LEDBlue2,255);
  }
  else if (outputValue2 < 220)//purple
  {
   analogWrite(LEDRed2,182);
   analogWrite(LEDGreen2,0);
   analogWrite(LEDBlue2,255);
  }
  else if (outputValue2 < 230)//pink purple
  {
   analogWrite(LEDRed2,219);
   analogWrite(LEDGreen2,0);
   analogWrite(LEDBlue2,225);
  }
  else if (outputValue2 < 240)//pink 
  {
   analogWrite(LEDRed2,255);
   analogWrite(LEDGreen2,0);
   analogWrite(LEDBlue2,208);
  }
/////////////3//////////////
  inputValue3 = analogRead(analogPin3);//read the value from the sensor
outputValue3 = map(inputValue3,0,1023,0,255);//Convert from 0-1023 proportional to the number of a number of from 0 to 255
 if (outputValue3 < 100) //red
  {
  analogWrite(LEDRed3,255);
   analogWrite(LEDGreen3,0);
   analogWrite(LEDBlue3,0); 
  }
  else if (outputValue3 < 110)//red orange
  {
   analogWrite(LEDRed3,255);
   analogWrite(LEDGreen3,60);
   analogWrite(LEDBlue3,0); 
  }
  else if (outputValue3 < 120)//orange
  {
   analogWrite(LEDRed3,255);
   analogWrite(LEDGreen3,123);
   analogWrite(LEDBlue3,0); 
  }
  else if (outputValue3 < 130)//orange yellow
  {
   analogWrite(LEDRed3,255);
   analogWrite(LEDGreen3,180);
   analogWrite(LEDBlue3,0); 
  }
  else if (outputValue3 < 140)//yellow
  {
   analogWrite(LEDRed3,255);
   analogWrite(LEDGreen3,246);
   analogWrite(LEDBlue3,0);
  }
  else if (outputValue3 < 150)//yellow green
  {
   analogWrite(LEDRed3,220);
   analogWrite(LEDGreen3,244);
   analogWrite(LEDBlue3,66);
  }
  else if (outputValue3 < 160)//green
  {
    analogWrite(LEDRed3,0);
   analogWrite(LEDGreen3,255);
   analogWrite(LEDBlue3,0);
  }
  else if (outputValue3 < 170)//green blue
  {
    analogWrite(LEDRed3,66);
   analogWrite(LEDGreen3,244);
   analogWrite(LEDBlue3,161);
  }
  else if (outputValue3 < 180)//blue
  {
   analogWrite(LEDRed3,0);
   analogWrite(LEDGreen3,255);
   analogWrite(LEDBlue3,250);
  }
   else if (outputValue3 < 190)//blue cyan
  {
   analogWrite(LEDRed3,66);
   analogWrite(LEDGreen3,164);
   analogWrite(LEDBlue3,244);
  }
  else if (outputValue3 < 200)//cyan
  {
   analogWrite(LEDRed3,0);
   analogWrite(LEDGreen3,0);
   analogWrite(LEDBlue3,255);
  }
   else if (outputValue3 < 210)//cyan purple
  {
   analogWrite(LEDRed3,140);
   analogWrite(LEDGreen3,66);
   analogWrite(LEDBlue3,255);
  }
  else if (outputValue3 < 220)//purple
  {
   analogWrite(LEDRed3,182);
   analogWrite(LEDGreen3,0);
   analogWrite(LEDBlue3,255);
  }
  else if (outputValue3 < 230)//pink purple
  {
   analogWrite(LEDRed3,219);
   analogWrite(LEDGreen3,0);
   analogWrite(LEDBlue3,225);
  }
  else if (outputValue3 < 240)//pink 
  {
   analogWrite(LEDRed3,255);
   analogWrite(LEDGreen3,0);
   analogWrite(LEDBlue3,208);
  }
 
  

/////////////4//////////////
  inputValue4 = analogRead(analogPin4);//read the value from the sensor
outputValue4 = map(inputValue4,0,1023,0,255);//Convert from 0-1023 proportional to the number of a number of from 0 to 255
 
 if (outputValue4 < 100) //red
  {
  analogWrite(LEDRed4,255);
   analogWrite(LEDGreen4,0);
   analogWrite(LEDBlue4,0); 
  }
  else if (outputValue4 < 110)//red orange
  {
   analogWrite(LEDRed4,255);
   analogWrite(LEDGreen4,60);
   analogWrite(LEDBlue4,0); 
  }
  else if (outputValue4 < 120)//orange
  {
   analogWrite(LEDRed4,255);
   analogWrite(LEDGreen4,123);
   analogWrite(LEDBlue4,0); 
  }
  else if (outputValue4 < 130)//orange yellow
  {
   analogWrite(LEDRed4,255);
   analogWrite(LEDGreen4,180);
   analogWrite(LEDBlue4,0); 
  }
  else if (outputValue4 < 140)//yellow
  {
   analogWrite(LEDRed4,255);
   analogWrite(LEDGreen4,246);
   analogWrite(LEDBlue4,0);
  }
  else if (outputValue4 < 150)//yellow green
  {
   analogWrite(LEDRed4,220);
   analogWrite(LEDGreen4,244);
   analogWrite(LEDBlue4,66);
  }
  else if (outputValue4 < 160)//green
  {
    analogWrite(LEDRed4,0);
   analogWrite(LEDGreen4,255);
   analogWrite(LEDBlue4,0);
  }
  else if (outputValue4 < 170)//green blue
  {
    analogWrite(LEDRed4,66);
   analogWrite(LEDGreen4,244);
   analogWrite(LEDBlue4,161);
  }
  else if (outputValue4 < 180)//blue
  {
   analogWrite(LEDRed4,0);
   analogWrite(LEDGreen4,255);
   analogWrite(LEDBlue4,250);
  }
   else if (outputValue4 < 190)//blue cyan
  {
   analogWrite(LEDRed4,66);
   analogWrite(LEDGreen4,164);
   analogWrite(LEDBlue4,244);
  }
  else if (outputValue4 < 200)//cyan
  {
   analogWrite(LEDRed4,0);
   analogWrite(LEDGreen4,0);
   analogWrite(LEDBlue4,255);
  }
   else if (outputValue4 < 210)//cyan purple
  {
   analogWrite(LEDRed4,140);
   analogWrite(LEDGreen4,66);
   analogWrite(LEDBlue4,255);
  }
  else if (outputValue4 < 220)//purple
  {
   analogWrite(LEDRed4,182);
   analogWrite(LEDGreen4,0);
   analogWrite(LEDBlue4,255);
  }
  else if (outputValue4 < 230)//pink purple
  {
   analogWrite(LEDRed4,219);
   analogWrite(LEDGreen4,0);
   analogWrite(LEDBlue4,225);
  }
  else if (outputValue4 < 240)//pink 
  {
   analogWrite(LEDRed4,255);
   analogWrite(LEDGreen4,0);
   analogWrite(LEDBlue4,208);
  }
  

    
}
Botón, zumbador y potenciómetro deslizanteC/C++
Utilizado con Sparkfun RedBoard
//Button Sound Code for Uno

int val;
int sensorPin=0;
int Buzzer1 = 9;

const int buttonPin2 = 2;
const int buttonPin3 = 3;
const int buttonPin4 = 4;
const int buttonPin5 = 5;

// the number of the pushbutton pin
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;

void setup() {
  // initialize the piezo as output:
  pinMode(Buzzer1, OUTPUT);  
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin2, INPUT);  
  pinMode(buttonPin3, INPUT); 
  pinMode(buttonPin4, INPUT); 
  pinMode(buttonPin5, INPUT); 
}

void loop(){
  
  // read the state of the pushbutton value:
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);
  
  val=map(analogRead(sensorPin),0,1024,0,900);
  Serial.println(val);


//////////////tone(buzzer,note,duration)
  if (val<250) ///////////////////////////////setting 1
 {                     
    if (buttonState2 == HIGH) 
    {     
      tone(Buzzer1, 25,200);
    }  
    if (buttonState3 == HIGH) 
    {  
      tone(Buzzer1,50,200);
    }
    if (buttonState4 == HIGH) 
    {
      tone(Buzzer1,75,200);
    }
    if (buttonState5 == HIGH) 
    {    
      tone(Buzzer1,100,200);
    } 
 } 
 else if (val<500) //////////////////////setting 2
 {                     
    if (buttonState2 == HIGH) 
    {     
      tone(Buzzer1,125,200);
    }  
    if (buttonState3 == HIGH) 
    {  
      tone(Buzzer1,150,200);
    }
    if (buttonState4 == HIGH) 
    {
      tone(Buzzer1,175,200);
    }
    if (buttonState5 == HIGH) 
    {    
      tone(Buzzer1,200,200);
    } 
 } 
 else if (val<750)  ////////////////////setting 3
 {                     
    if (buttonState2 == HIGH) 
    {     
      tone(Buzzer1,225,200);///////////
    }  
    if (buttonState3 == HIGH) 
    {  
      tone(Buzzer1,250,200);
    }
    if (buttonState4 == HIGH) 
    {
      tone(Buzzer1,275,200);
    }
    if (buttonState5 == HIGH) 
    {    
      tone(Buzzer1,300,200);
    } 
 } 
 else if (val<1023) /////////////////////setting 4
 {                     
    if (buttonState2 == HIGH) 
    {     
      tone(Buzzer1,325,200);
    }  
    if (buttonState3 == HIGH) 
    {  
      tone(Buzzer1,350,200);
    }
    if (buttonState4 == HIGH) 
    {
      tone(Buzzer1,375,200);
    }
    if (buttonState5 == HIGH) 
    {    
      tone(Buzzer1,400,200);
    } 
 } 
  
}

diagramas

Luces y potenciómetros de perilla
Descargar
gggggggggggggggggggg nr0aatizxm
Botón, zumbador y potenciómetro deslizante
Descargar
Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

 

Fuente Arduino.cc