Tengu met Arduino uno

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Tengu met Arduino uno

Berichtdoor Sembot » 12 Okt 2013, 16:50

Hai,

Is er al iemand begonnen met zelf een Tengu te bouwen met Arduino Uno

Voor wie het niet kent Tengu is een dot matrix display ( bij mij is dit 5X7 ) die een zingend gezicht voorsteld zie Youtube link

https://www.youtube.com/watch?v=4UPfBVk3HxI

Op onderstaande site heb ik het een en ander geplaatst wat ik al heb , nu is mijn vraag kan er iemand mij helpen om beide of een ander programma samen te stellen zodat mijn display zou kunnen meezingen op muziek

http://hr-bot.blogspot.be/

Dank bij voorbaat
Erwin alias Sembot

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Tengu met Arduino uno

Berichtdoor nicoverduin » 12 Okt 2013, 21:07

Erwin
Is het de bedoeling van jou dat hij bij een bepaald volume bepaalde patronen laat zien?
Nico
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Tengu met Arduino uno

Berichtdoor Sembot » 13 Okt 2013, 14:06

Hai Nico,

Min of meer , zoiets als je spreekt dat het erop lijkt dat het echt is , dus de bewegingen van de mond
Af en toe knipperen met de ogen en na een tijdje als het stil is val hij in slaap , dus mond een lijn en de ogen 2 blokjes breed

Zoiets zou ik het graag willen , maar vooral wil ik het programma begrijpen dus de werking met zoveel mogelijk verklaringen en info

Alvast bedankt voor de snelle reactie

mvg
Erwin

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Tengu met Arduino uno

Berichtdoor nicoverduin » 13 Okt 2013, 19:27

Erwin
Dan stel ik voor om in dat kader jou het programma te laten schrijven (daar leer je het meeste van). Wel kunnen wij jou helpen om de voorbeelden door te lopen en te begrijpen. ff voor mijn beeld: dat eerste voorbeeld op jouw site laat zeker 2 verschillend images zien?
Maar is dit wat?
Nico
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Tengu met Arduino uno

Berichtdoor Sembot » 13 Okt 2013, 20:39

Hai Nico,

Het tweede programma laat inderdaad 2 beelden zien een met de mond dicht en een met de mond open
En het eerste programma laat een led aan gaan bij een geluid in de micro
Nu zou het intersant zijn om deze 2 te combineren dus als er geluid is gaat de mond open bij zwijgen blijf de mond toe
Dus infeite de beide programmas combineren , gewoon bijeen plakken gaat natuurlijk niet
En dit is mijn vraag hoe moet je dit doen ???????
Graag wat tips als het kan

mvg
Erwin

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Tengu met Arduino uno

Berichtdoor nicoverduin » 13 Okt 2013, 20:55

Eerst even beide sketches hier. Dat leest gemakkelijker:
De led sketch :
Code: Alles selecteren
int idx = 0;
unsigned long last;
void setup() {
  last = millis();
  pinMode( 9, OUTPUT );         // Pin 13 col 1
  pinMode( 10, OUTPUT );       // Pin   3 col 2
  pinMode( 11, OUTPUT );       // Pin   4 or 11 col 3
  pinMode( 12, OUTPUT );       // Pin 10 col 4
  pinMode( 13, OUTPUT );       // Pin   6 col 5
 
  pinMode( 2, OUTPUT );         // Pin   9 row 1
  pinMode( 3, OUTPUT );         // Pin 14 row 2
  pinMode( 4, OUTPUT );         // Pin   8 row 3
  pinMode( 5, OUTPUT );         // Pin 12 or 5 row 4
  pinMode( 6, OUTPUT );         // Pin   1 row 5
  pinMode( 7, OUTPUT );         // Pin   7 row 6
  pinMode( 8, OUTPUT );         // Pin   2 row 7
   for( int r = 0; r < 7; r++) {
     digitalWrite( r + 2, LOW );
   }
   for( int c = 0; c < 5; c++) {
     digitalWrite( c + 9, HIGH);
   }
}
byte leds[7][5];
void setPattern( byte pattern[20][5], int idx ) {
  for( int r =0; r < 7; r++) {
    for( int c = 0; c < 5; c++) {
      leds[r][c] = pattern[r + idx][c];
     }
   }
}
void draw() { 
  for( int r =0; r < 7; r ++ ) {
    digitalWrite( r + 2, HIGH );
    for( int c=0; c < 5; c ++ ) {
      digitalWrite( 13 - c, ( leds[r][c] == 1 ? LOW : HIGH ));
    }
    delayMicroseconds(900);
    digitalWrite( r + 2, LOW );
  }
}
void loop() {
  if ( millis() - last > 400 ) {
    idx = (idx == 0 ?  7 : 0);
    last = millis();
  }
  byte tmp[14][5] = {
  { 0,0,0,0,0},
  { 0,1,0,1,0},
  { 0,0,0,0,0},
  { 0,1,1,1,0},
  { 0,1,0,1,0},
  { 0,1,1,1,0},
  { 0,0,0,0,0},
 
  { 0,0,0,0,0},
  { 0,1,0,1,0},
  { 0,0,0,0,0},
  { 0,0,0,0,0},
  { 0,1,1,1,0},
  { 0,0,0,0,0},
  { 0,0,0,0,0},
  };
  setPattern( tmp, idx );
  draw();
}


En de muziek sketch
Code: Alles selecteren
/*
 * Monitor for sound sensor
 */
int potPin = A2;                                  // select the input pin for sound sensor
int ledPin = 13;                                  // select the pin for the LED
int val = 0;
int amp = 0;
void setup() {
  pinMode(ledPin, OUTPUT);                        // declare the ledPin as an OUTPUT
}
void loop() {
  val = analogRead(potPin);
  amp = (val >= 512) ? val - 512 : 512 - val;
  if (amp > 400) {                                // was 100
    digitalWrite(ledPin, HIGH);
    delay(20);
  }
  else {
    digitalWrite(ledPin, LOW);
  }
}


En wat je in beide ziet is dat ze schitteren van commentaar. Dus stel ik voor dat je ze eerst van commentaar voorziet. Begin met die van de leds omdat dat waarschijnlijk ook de definitieve wordt. En ik doe dit niet voor niets hoor. Veel mensen snappen uiteindelijk hun eigen programma's niet omdat ze niet documenteren. Neem van deze oude rot aan... Je kan niet genoeg documenteren!!! En als je bezig bent begrijp je vanzelf hoe het programma werkt en waar evt. verbetering mogelijk is.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Tengu met Arduino uno

Berichtdoor Sembot » 13 Okt 2013, 21:58

Hai

Bedankt en je hebt gelijk wat de commendaar betreft

512 is een gemiddelde waarde die de microfoon voortbrengt , dus alle signalen die ontvangen worden daar het gemiddelde van ( denk ik )

? : wat betekennen deze symbolen ????


/*
* Monitor for sound sensor
*/

int potPin = A2; // micro op pin A2 aansluiten
int ledPin = 13; // Led aansluiten op Pin 13
int val = 0; // val = variabele met de beginwaarde 0
int amp = 0; // amp = variabele met de beginwaarde 0

void setup() {
pinMode(ledPin, OUTPUT); // zet de ledPin 13 als output
}

void loop() {
val = analogRead(potPin); // val lees de waarde als er op potPin iets of niets te horen is
amp = (val >= 512) ? val - 512 : 512 - val; // als de inkom waarde val groter is dan 512 (? ken ik niet )Val waarde min 512 (:ken ik niet )512 min de waarde van val
if (amp > 400) { // als amp groter is dan 400
digitalWrite(ledPin, HIGH); // schrijf naar de uitgang 13 en laat hij de led aangaan
delay(20); // wacht 20msec
}
else { // anders
digitalWrite(ledPin, LOW); // schrijf naar de uitgang en laat de led uitgaan
}
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Tengu met Arduino uno

Berichtdoor nicoverduin » 13 Okt 2013, 22:23

amp = (val >= 512) ? val - 512 : 512 - va;

Is het zelfde als:

Code: Alles selecteren
if (val > = 512) {
    amp = val - 512;
} else {
    amp = 512 - val;
}


Maar steek nu eerst maar energie in die led sketch. Daar zit het meeste werk in.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Tengu met Arduino uno

Berichtdoor Sembot » 15 Okt 2013, 20:20

Hai ,

Niet ongerust worden ben eraan bezig
int idx = 0; // idx variabele met waarde 0
unsigned long last; // last kan een waarde zijn van 0 tot 4,294,967,295 (2^32 - 1) hebben

void setup() {
last = millis(); //Last = millis(); // last wordt gevuld met millis()
//Millis laat zien hoeveel milliseconde het Arduino board in werking is na de start van het
//lopende programma. De weergave is een long variabele.

pinMode( 9, OUTPUT ); // op pin 9 kom te aansluiting van de matrix Pin 13 col 1
pinMode( 10, OUTPUT ); // op pin 10 kom te aansluiting van de matrix Pin 3 col 2
pinMode( 11, OUTPUT ); // op pin 11 kom te aansluiting van de matrix Pin 4 or 11 col 3
pinMode( 12, OUTPUT ); // op pin 12 kom te aansluiting van de matrix Pin 10 col 4
pinMode( 13, OUTPUT ); // op pin 13 kom te aansluiting van de matrix Pin 6 col 5

pinMode( 2, OUTPUT ); // op pin 2 kom te aansluiting van de matrix Pin 9 row 1
pinMode( 3, OUTPUT ); // op pin 3 kom te aansluiting van de matrix Pin 14 row 2
pinMode( 4, OUTPUT ); // op pin 4 kom te aansluiting van de matrix Pin 8 row 3
pinMode( 5, OUTPUT ); // op pin 5 kom te aansluiting van de matrix Pin 12 or 5 row 4
pinMode( 6, OUTPUT ); // op pin 6 kom te aansluiting van de matrix Pin 1 row 5
pinMode( 7, OUTPUT ); // op pin 7 kom te aansluiting van de matrix Pin 7 row 6
pinMode( 8, OUTPUT ); // op pin 8 kom te aansluiting van de matrix Pin 2 row 7


for( int r = 0; r < 7; r++) { // variabele r=0 ; R is kleiner dan 7 ; r=r+1
digitalWrite( r + 2, LOW );
}
for( int c = 0; c < 5; c++) { // variabele c= 0 ; Cis kleiner dan 5 ; C=C+1
digitalWrite( c + 9, HIGH);
}
}

byte leds[7][5]; // array 7 hoog en 5 breed = 35 leds




Nu zoek ik deze laatste uit vind niet direct een uitleg voor C+9 ,high , denk als ik deze vind ik het voorgaande ook weet ( R+2) , nog effe zoeken dus


mvg

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Tengu met Arduino uno

Berichtdoor nicoverduin » 15 Okt 2013, 20:26

Niet overdrijven heh :)
Code: Alles selecteren
for( int r = 0; r < 7; r++) { // variabele r=0 ; R is kleiner dan 7 ; r=r+1
digitalWrite( r + 2, LOW );
}

Wat hier echt gebeurt is : zet alle digitale pinnen van 2-8 op 0. Dit zijn alle rij aansturingen.

enz. Je hoeft niet te herhalen wat er al geprogrammeerd staat Die pinmode beschrijvingen zijn wel lekker duidelijk zo :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten