Arduino @ HoGent

Short description:

Op deze project pagina staat de documentatie van de Arduino Worshop gegeven op 4 maart aan de HoGent.



Project:

Documenten:

Voorblad: odt-formaat pdf-formaat
ArduinoProgrammeren: odt-formaat pdf-formaat
BasischProgrammeren: odt-formaat pdf-formaat
Tutorial1: odt-formaat pdf-formaat
Tutorial2: odt-formaat pdf-formaat
Tutorial3: odt-formaat pdf-formaat
TutorialX: odt-formaat pdf-formaat
Feedback: odt-formaat pdf-formaat

 

Tutorial X: Een liedje spelen met arduino:

/* Play Melody - Every single arduino has got a story to sing.
* -----------------------------------------------------------
*
* Door de output van een pin heel snel af en aan te schakelen kunnen we frequenties genereren.
* Dit doen we aan de hand van PWM (Pulse With Modulation)
*
* Elke toon heeft een frequentie, dit is het aantal oscillaties van het metalen plaatje per seconde.
* Dit plaatje zet de lucht aan het bewegen, die vervolgens ons oor raakt waardoor we geluid horen.
*
* De formule voor het berekenen welke periode nodig is bij het gebruik van PWM:
*
* periode = 100000*1/frequentie
*
* Versie: http://www.arduino.cc/en/Tutorial/PlayMelody (tuned by Batist)
*/


// TONEN ==========================================
// noot, periode, & frequency.
#define G_ 2083 // 48 Hz
#define A 1818 // 55 Hz
#define B 1639 // 61 Hz
#define C 1538 // 65 Hz
#define D 1369 // 73 Hz
#define E 1219 // 82 Hz
#define F 1149 // 87 Hz
#define G 1020 // 98 Hz
#define R 0 // Rust

// SETUP ============================================
// We kiezen een pin, waarbij het zeker mogelijk is PWM toe te passen.
int speakerOut = 9;


void
setup() { pinMode(speakerOut, OUTPUT);
}


// MELODY and TIMING =======================================
// melody[] houdt de noten bij. (Begin te tellen vanaf 0!) melody[0]= E, melody[2] = G, enz...
int melody[] = { E, E, G, E, D, C, B, E, E, G, E, D, C, D, C, B, G_, G_, G_, G_, G_, G_, G_, G_, A, A, A, A, A, A, A, A};

// beats[] houdt bij hoe lang de noten moeten aangehouden worden.
int beats[] = { 96, 32, 40, 32, 32, 128, 128, 96, 32, 40, 32, 32, 32, 32, 32, 128, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32};

// Hier berekenen we de lengte van het hele muziek stukje.
int MAX_COUNT = sizeof(melody)/2;

// Algemeen tempo:
long tempo = 10000;

// Algemene pauze tussen de noten:
int pause = 1000;


// PLAY TONE ==============================================
// Deze functie zal een bepaalde toon afspelen.
void playTone(int tone, int beat) {

//Controlleer of het een gewone noot is of een pauze.
if (tone > 0) {
//Naar gelang de frequentie van de noot, en de duur pulse up & pulse down, met een bepaald interval.
for(long elapsed_time = 0; elapsed_time < beat*tempo; elapsed_time+=tone) { digitalWrite(speakerOut,HIGH); delayMicroseconds(tone / 2); digitalWrite(speakerOut, LOW); delayMicroseconds(tone / 2);
}
}

else
{ // In geval van een pauze, wacht.
delayMicroseconds(beat*tempo);
}
}


// MAIN LOOP =============================
// Deze lus wordt steeds opnieuw herhaald.
void loop() {
// Doorloop de melodie noot per noot.
for (int i=0; i<MAX_COUNT; i++) { playTone(melody[i], beats[i]);

// We voegen de pauze in tussen de verschillende noten.
delayMicroseconds(pause);

}
}