Objetivo: Construir una ruleta de la suerte que determine aleatoriamente unas ganancias o unas pérdidas cada vez que se pulse un botón..
Comentarios:
Con randomSeed(millis()) hemos conseguido que en cada reinicio de Arduino los valores aleatorios sean diferentes.
Hemos creado la función girosPrevios() para simular unos movimientos previo hasta que la aguja se situa definitivamente en el premio.
Con Angulo = 15+30*int(random(0,6.)) conseguimos valores aleatorios para que la aguja se situe exactamente en la mitad de un sector.
En el Setup() hemos forzado un giro de 0º y uno de 180º para comprovar que el paper está bien ajustado.
Para fijar el servo motor hemos utilizado unas piezas de Lego.
Para realizar el diseño en papel hemos utilizado GeoGebra, que nos ha permitido dibujar un semicirculo y dividirlo en seis sectores iguales.
Vídeo:
Componentes: Arduino Uno 3R, 1 pulsador, 1 servo motor, 1 condensador de 100 μF y 1 resistencia de 10KΩ.
Imagen del circuito:
Código:
#include <Servo.h> #include <Time.h> Servo MiServo; int ValorPot; int Angulo; void setup() { Serial.begin(9600); MiServo.attach(9); MiServo.write(0); delay(1000); MiServo.write(180); delay(1000); } void loop() { if(digitalRead(A0) == HIGH){ randomSeed(millis()); girosPrevios(); Angulo = 15+30*int(random(0,6.)); MiServo.write(Angulo); Serial.println(Angulo); delay(100); } } void girosPrevios(){ for(int i = 0; i < 10; i++) { Angulo = int(random(5, 175)); MiServo.write(Angulo); delay(100); } }