clap clap koodi hukassa (arduino mega)

Meillä on koulussa projekti, jossa ohjelmoimme arduinolla.

Tarkoitus olisi tehdä elokuvista tuttu klap klap eli taputus valot. Olemme todella amatöörejä ohjelmoinnin suhteen ja kaipalemme neuvoja

Eli meillä on seuraavat laitteet:

Arduino mega 2560
Microphone
TFT Tscreen + shield
Langaton etäohjattava virtakytkin

Toimintaperiaate:

  • Laite kuuntelee herkeämättä taputuksia
  • Kun se kuulee kaksi taputusta, antaa lähetyssignaalin hakkeroidulle kaukosäätimelle > ja lamppu syttyy
  • Kun se kuulee toisen kerran kaksi taputusta, lähettää se toisesta pinnistä off käskyn > lamppu sammuu

Lisäksi näytölle tarvitaan ohjelma, jolla voidaan ohjata samaa ja ehkä useampaa lamppua.

Tässä ohjelmaa tähän asti: (tätäkään emme ihan omin neuvoin saaneet kasaan) :slight_smile:

int aika = 0;
int led = 13; // virta päälle
int led = 12; // virta pois
int muisti1
int threshold = 550; //Change This
int volume;
int koputus1 = 0;
int koputus2 = 0;

void setup() {
Serial.begin(9600); // For debugging
pinMode(led, OUTPUT);
}

void loop() {

volume = analogRead(A0); // Reads the value from the Analog PIN A0
/*
//Debug mode
Serial.println(volume);
delay(100);
int aika = 0;
*/

if(volume>=threshold) // jos koputus ylittää asetetun kynnysäänen
{
koputus1 = millis(); // lähtee kello käyntiin
delay(10);

    while(aika-koputus1 < 1000) // sekunnin aikana kuuntelee seuraavaa koputusta
    {
      volume = analogRead(A0); // lukee arvon
    aika = millis();
                      if(volume>=threshold)
                      {
                        koputus2 = aika;

                        while(aika-koputus2 < 700)
                        {
                          aika =millis();
                        }
                       digitalWrite(led, HIGH);
                       delay(100);
                       digitalWrite(led, LOW);
                      }

    }

}
}

Ledi vilkahtaa kyllä tällä ohjelmalla, joten tarvitsisimme apua valon sammuttamiseen , jotta voisimme samalla käskyllä lähettää sammutus-käskyn toisesta pinnistä.

Kiitos!!

Näyttää siltä saimme valot päälle radio-ohjaimen avulla!! Puolivoitto!! Saimme myös valon sammumaan koekytkentälevyllä. Kyllä!

Tässä koodia:
int aika = 0;
int paalle = 13;
int pois = 12;
int threshold = 550; //Change This
int volume;
int koputus1 = 0;
int koputus2 = 0;

void setup() {
Serial.begin(9600); // For debugging
pinMode(paalle, OUTPUT);
pinMode(pois, OUTPUT);
}

void loop() {

volume = analogRead(A0); // Reads the value from the Analog PIN A0
/*
//Debug mode
Serial.println(volume);
delay(100);
int aika = 0;
*/

if(volume>=threshold) // jos koputus ylittää asetetun kynnysäänen
{
koputus1 = millis(); // lähtee kello käyntiin
delay(10);

    while(aika-koputus1 < 500) // sekunnin aikana kuuntelee seuraavaa koputusta
    {
      volume = analogRead(A0); // lukee arvon
    aika = millis();
                      if(volume>=threshold)
                      {
                        koputus2 = aika;

                        while(aika-koputus2 < 700)
                        {
                          aika =millis();
                        }
                       digitalWrite(paalle, HIGH);
                       delay(100);
                       digitalWrite(paalle, LOW);
                      }

    }

}
{

    while(aika-koputus1 < 2000) // kopioitu ylempää.
    {
      volume = analogRead(A0); // lukee arvon
    aika = millis();
                      if(volume>=threshold)
                      {
                        koputus2 = aika;

                        while(aika-koputus2 < 700)
                        {
                          aika =millis();
                        }
                       digitalWrite(pois, HIGH);
                       delay(100);
                       digitalWrite(pois, LOW);
                      }

    }

}
}

Hyvä homma! Olin kirjoittamassa vastausta jo edelliseen viestiinne, mutta aina on parempi jos itse ratkaisee ongelman. Jos asiassa tulee vielä jotain, niin kysykää. Kyllä niihin aina vastaus löytyy.

Tehkää kuitenkin itsellenne ja koko yhteiskunnalle palvelus, ja opetelkaa käyttämään sisennettyä koodia ja pastetkaa koodi aina [code] -tagien sisään. Minä en ainaan lähde tuota koodia ilman sisennystä lukemaan… :slight_smile: