Let op: Dit is een vervolg op de tutorial “keyboard” uit het boekje Arduino voor iedereen van Hubbit (bladzijde 22, 23 en 24). Zorg er dus voor dat je deze tutorial gedaan hebt.

Omdat het keyboard dat we net hebben gemaakt nog niet irritant genoeg is gaan we hier een laagje bovenop gooien. Doormiddel van kleine ledjes laten we duidelijk zien wanneer welke toets in wordt gedrukt. Hoewel dit het keyboard alleen maar irritanter maakt zorgt het wel voor een extra uitdaging, precies waar we naar opzoek zijn. Zie het filmpje hieronder.

Op ons breadbord hebben wij per knopje twee aansluitinkjes over. Een in het midden van het knopje en een aan de rechterkant van het knopje. Deze twee pinnetjes gaan wij gebruiken om onze lampjes te voorzien van stroom en signaaltjes. Zie de ronde lijnen in de afbeelding 1 als voorbeeld.

We gaan meteen beginnen met het plaatsen van de lampjes in deze aansluitingkjes. Het maakt niet uit welke pinnetje (kort of lang) van het lampje je aansluit aan welke aansluiting. Zolang je, voor je eigen organisatie, consistent blijft. Draai de lampjes dus niet halverwege om, dit levert heel veel verwarring op.

Afbeelding 1 (voorbeeld aansluitingen)

Als tweede gaan we ervoor zorgen dat alle korte pinnetjes aangesloten worden op ground. Hiervoor gebruik  je de buitenste aansluiting van het breadbord. (de aansluitinkjes naast de blauwe en rode lampjes). Het handigste is om ervoor te zorgen dat alle aansluitingen langs de blauwe lijntjes aangesloten worden op een ground aansluiting. Het is niet verplicht om het op deze manier te doen. Hiernaast is het natuurlijk belangrijk om te weten dat er niet vanzelf stroom op de aansluitinkjes langs het blauwe lijntje staat. Hiervoor moet je zorgen door de GND (ground) aansluiting op je arduino (op iedere arduino staat er minstens één) te verbinden met het blauwe ground rijtje.

We zijn er bijna en gaan nu ervoor zorgen dat we onze lampjes aan kunnen sturen. Dit doen we doormiddel van 6 analoge en 2 digitale aansluitingen. Als je gebruikt maakt van de arduino nano let op: A6 en A7 kun je niet gebruiken om dingen aan te sturen. De korte pinnetjes van de eerste 6 lampjes sluit je dus aan op A0 tot en met A6. Voor de laatste twee lampjes gebruik je D11 en D12.

Op dit moment zijn we klaar met het hardware gedeelte. We hoeven alleen nog maar de software te schrijven. Als je het leuk vind kun je dit zelf doen. Als je dit niet leuk vindt of als je hier geen tijd voor hebt kun je de code hieronder die ik al voor je heb gemaakt gebruiker. Met het gebruik van deze code weet je zeker dat je keyboard met lampjes werkt.

const int piezoPin = 2;
const int notes[] = {261, 293, 329, 349, 391, 440, 493, 523}; // Zie https://en.wikipedia.org/wiki/Piano_key_frequencies
int switchstates[] = {0, 0, 0, 0, 0, 0, 0, 0};void setup() {
pinMode(piezoPin, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);

for (int pinNumber = 3; pinNumber <= 10; pinNumber++) {
pinMode(pinNumber, INPUT);
}
}void loop() {
for (int switchNumber = 0; switchNumber <=7; switchNumber++) {
switchstates[switchNumber] = digitalRead(switchNumber + 3);
}    digitalWrite(A7, HIGH);

if (switchstates[0] == HIGH) {
tone(piezoPin, notes[0]);

digitalWrite(A0, HIGH);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
else if (switchstates[1] == HIGH) {
tone(piezoPin, notes[1]);      digitalWrite(A0, LOW);
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
else if (switchstates[2] == HIGH) {
tone(piezoPin, notes[2]);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(A6, LOW);
digitalWrite(A7, LOW);
}
else if (switchstates[3] == HIGH) {
tone(piezoPin, notes[3]);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(A6, LOW);
digitalWrite(A7, LOW);
}
else if (switchstates[4] == HIGH) {
tone(piezoPin, notes[4]);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, HIGH);
digitalWrite(A5, LOW);
digitalWrite(A6, LOW);
digitalWrite(A7, LOW);
}
else if (switchstates[5] == HIGH) {
tone(piezoPin, notes[5]);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, HIGH);
digitalWrite(A6, LOW);
digitalWrite(A7, LOW);
}
else if (switchstates[6] == HIGH) {
tone(piezoPin, notes[6]);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(A6, HIGH);
digitalWrite(A7, LOW);
}
else if (switchstates[7] == HIGH) {
tone(piezoPin, notes[7]);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else {
noTone(piezoPin);      digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
}

Categorieën: Arduino