simongame

Arduino ile takip oyunu tasarlama

Arduino ile projelerin yanında  küçük oyunlar da  tasarlayabilirsiniz. Bu yazımızda arduinomuz ile 3 LED ve 3 butonla yapabileceklerinize inanamıyacaksınız. Projemiz sizin yaptıklarınızı size gösterecektir.

Projemizde her renk yandığında renge göre bir tonda duyacaksınız. .

Projemizin bağlantı şeması

takipoyunu

Devrede kullanılan dirençler

3x 220ohm LEDler için

3x 10Kohm Butonlar için

Programımız

int renkledcikislari[] = {4,2,6};
int renksesleri[] = {262, 349, 494};
int renkButonlari[] = {5,3,7};
 
 
int rasgeleSayi;
 
const int piezoPin = 9;
int renkSiralamasi[10];
int kullanicilar = 0;
int computerNumber = 0;
int butonDurumu = 0;
int length = 10;
 
void setup() {
  int n;
  for(n=0; n<3; n++){
    pinMode(renkledcikislari[n], OUTPUT);
    digitalWrite(renkledcikislari[n], LOW);
  }
   
  for(n=0; n<length; n++) renkSiralamasi[n] =0;
   
  for(n=0; n<3; n++){
    pinMode(renkButonlari[n], INPUT);
  }
}
 
void loop() {
  if(kullanicilar < length)
  {
    checkForUserInput();
  }
  else
  {
    playSequence();
  }
}
 
void checkForUserInput()
{
   for(int n=0; n<3; n++)
  {
      if(checkForButton(renkButonlari[n])){
         playColor(n);
         renkSiralamasi[kullanicilar++] = n;
      }
  }
}
 
bool checkForButton(int pinNumber){
  butonDurumu = digitalRead(pinNumber);
  bool returnValue;
  // check if the pushbutton is pressed.
  // if it is, the butonDurumu is HIGH:
  if (butonDurumu == HIGH) {   
      returnValue = true;
  }
  else {
      returnValue = false;
  }
  return returnValue;
}
 
void playColor(int colorNum){
  tone(piezoPin, renksesleri[colorNum], 100);
  blinkLight(renkledcikislari[colorNum]); 
}
 
void blinkLight(int ledPin)
{
  digitalWrite(ledPin, HIGH);
  delay(200);
  digitalWrite(ledPin, LOW);
  noTone(piezoPin);
  delay(100);
} 
 
void playSequence(){
  if(computerNumber >= length) computerNumber = 0;
   
  playColor(renkSiralamasi[computerNumber++]);
}

Boş zamanlarda arduino ile uğraşan kendi halinde bir Öğretmen.

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.