Progetto Arduino: sconfiggi il mostro

Colpisci il mostro con il puntatore laser per farlo ritirare dentro alla scatola… almeno fino al prossimo attacco a sorpresa!


Versione 1.0 (“Mostro della palude”)

Strumenti

  • Arduino UNO
  • Fotoresistenza
  • Servo-motore
  • Puntatore laser
  • Cavi elettrici e resistenze

Lo scopo del gioco è colpire la fotoresistenza (posta tra le fauci del mostro) con un puntatore laser. Quando ciò avviene, il servo-motore ruota di 90° e nasconde il mostro dentro alla scatola. Dopo un numero casuale di secondi, il servo-motore torna alla posizione di partenza: il mostro sta sferrando un altro attacco!

Diagramma dei collegamenti

Codice

Clicca qui per visualizzare
#include "Servo.h"

#define lightPin 0
#define servopin 5

int reading;
int delaytime;

Servo myservo;

void setup()
{
  delay(500);
  myservo.attach(servopin);
myservo.write(90);
}

void loop()
{
  reading  = analogRead(lightPin);
     
  if(reading>600) {
    myservo.write(1);
  delaytime = random(1000,5000);
    delay(delaytime);
    myservo.write(90);
  }

delay(10);
 
}

Galleria


Versione 2.0 (“A punti”)

Strumenti

  • Arduino UNO
  • Fotoresistenza
  • Servo-motore
  • Cicalino passivo
  • Display LCD
  • Puntatore laser
  • Cavi elettrici e resistenze

Il mostro si alza e si abbassa casualmente. Se lo colpisci quando è scoperto, totalizzi 5 punti: il display LCD aggiorna il punteggio che hai accumulato fino a quel momento, e un segnale acustico segnala che il tuo tentativo è andato a segno!

Diagramma dei collegamenti

Codice

Clicca qui per visualizzare
#include "Servo.h"
#include <LiquidCrystal.h>

#define lightPin 0
#define servoPin 5
#define buzzPin 6

int reading;
int delaytime;
unsigned long start;
int punti;
int i;

Servo myservo;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup()
{
myservo.attach(servoPin);
myservo.write(90);
delay(500);
myservo.write(1); // si nasconde
delay(500);

  delaytime = random(1000,5000);
  start = millis();
  punti = 0;
  i = 0;

lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Punti: ");
  lcd.setCursor(7, 0);
  lcd.print(punti);
}


void loop()
{

if(millis() - start > delaytime) { // nuovo round

  myservo.write(90); // compare il mostro
  delaytime = random(2000,5000); // è visibile

    start = millis();
    i = i + 1;
  lcd.setCursor(0, 1);
  lcd.print("Round: ");
  lcd.print(i);
   
  while(millis() - start < delaytime && reading < 600) {
      reading  = analogRead(lightPin);
    }

  if(reading > 599) { // colpito!
      tone(buzzPin, 1000, 500);
      punti = punti + 5;
      lcd.setCursor(7, 0);
      lcd.print(punti);
    }

  myservo.write(1); // si nasconde
  delaytime = random(2000,5000); // è nascosto
    start = millis();
    reading = 0;
   
  }

  delay(10);

}

Galleria

Un commento su “Progetto Arduino: sconfiggi il mostro

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *