I den här lektionen ska vi göra ett enkelt piano som använder 1 stift och 7 parallella motstånd.
Vi bygger pianot steg för steg och testar varje steg för sig.
Vi har redan sett hur man läser knapparna i lektionshäfte 2, sidan 16. Vi har redan sett uppspelningen av ett ljud i lektionshäfte 3, sidan 17.
| Vi börjar med mittentangenten med frekvens 247. Sedan lägger vi till 3 tangenter till vänster. Sedan lägger vi till 3 nycklar till höger. Frekvenserna finns på den här bilden, :————-:|:—————————————-:
I lektion 231763256 kommer vi att göra ett piano med parallella universum!
\pagebreak
Anslut den första knappen enligt bilden. Sätt knappen i mitten av din brödbräda!
Lösning 1
| ‘Pull Down’-motståndet ser till att stift 2 är anslutet till GND när knappen inte trycks in :————-:|:—————————————-:
\pagebreak
Sätt den här koden på din Arduino:
const int speaker_pin = 8;
const int piano_pin = A0;
void setup()
{
pinMode(speaker_pin, OUTPUT);
pinMode(piano_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(piano_pin));
if (analogRead(piano_pin) > 510)
{
tone(speaker_pin, 247);
delay(250);
noTone(speaker_pin);
delay(250);
}
}
| ‘>’ betyder ‘större än’. Värdet A0
är aldrig exakt en siffra. I seriemonitorn läser vi av siffran som motsvarar knappen och testar sedan efter en siffra som ligger strax under det.
:————-:|:—————————————-:
Får du ett ljud när du trycker på knappen? Sedan kan du gå vidare till uppgift 2.
\pagebreak
Anslut en andra knapp till vänster om den första, med två motstånd framför sig som är parallella [alltså 5k], se bild.
| Två 10k motstånd parallellt ger ett 5k motstånd. :————-:|:—————————————-:
| Två 10k motstånd i serie ger ett 20k motstånd. :————-:|:—————————————-:
Kretsen för uppgift 2
| Använd den seriella monitorn för att fastställa värdet på den nya knappen. :————-:|:—————————————-:
| Det nya värdet är högre än värdet på den andra knappen. Den nya if-satsen bör komma överst. :————-:|:—————————————-:
| Vilken frekvens får den nya knappen? :————-:|:—————————————-:
Använd denna kod:
| Är det nödvändigt att ange hela koden igen? :————-:|:—————————————-:
const int speaker_pin = 8;
const int piano_pin = A0;
void setup()
{
pinMode(speaker_pin, OUTPUT);
pinMode(piano_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
const int sensorValue = analogRead(piano_pin);
Serial.println(sensorValue);
if (sensorValue > 680)
{
tone(speaker_pin, 220);
delay(250);
noTone(speaker_pin);
delay(250);
}
else if (sensorValue > 510)
{
tone(speaker_pin, 247);
delay(250);
noTone(speaker_pin);
delay(250);
}
}
\pagebreak
Bygg nu en tredje nyckel, till vänster om den föregående.
Använd nu 3 parallella motstånd.
| Använd den seriella monitorn för att fastställa värdet på den nya knappen. :————-:|:—————————————-:
| Vilken frekvens får den nya knappen? :————-:|:—————————————-:
\pagebreak
Lösning 3
const int speaker_pin = 8;
const int piano_pin = A0;
void setup()
{
pinMode(speaker_pin, OUTPUT);
pinMode(piano_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
const int sensorValue = analogRead(piano_pin);
Serial.println(sensorValue);
if (sensorValue > 820)
{
tone(speaker_pin, 196);
delay(250);
noTone(speaker_pin);
delay(250);
}
else if (sensorValue > 680)
{
tone(speaker_pin, 220);
delay(250);
noTone(speaker_pin);
delay(250);
}
else if (sensorValue > 510)
{
tone(speaker_pin, 247);
delay(250);
noTone(speaker_pin);
delay(250);
}
}
\pagebreak
Bygg nu en fjärde nyckel, till vänster om den föregående.
Använd nu 4 parallella motstånd.
| Använd den seriella monitorn för att fastställa värdet på den nya knappen. :————-:|:—————————————-:
| Vilken frekvens får den nya knappen? :————-:|:—————————————-:
\pagebreak
Lösning 4
const int speaker_pin = 8;
const int piano_pin = A0;
void setup()
{
pinMode(speaker_pin, OUTPUT);
pinMode(piano_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
//... vorige code hier
else if (sensorValue > 510)
{
tone(speaker_pin, 247);
delay(250);
noTone(speaker_pin);
delay(250);
}
}
\pagebreak
Bygg nu den 5:e tangenten till höger om de föregående tangenterna. Använd nu inte parallella motstånd, utan 2 motstånd på 10k Ohm kopplade i serie.
| Använd den seriella monitorn för att fastställa värdet på den nya knappen. :————-:|:—————————————-:
| Vilken frekvens får den nya knappen? :————-:|:—————————————-:
Kretsen kommer att se ut så här.
Krets för uppgift 5
\pagebreak
const int speaker_pin = 8;
const int piano_pin = A0;
void setup()
{
pinMode(speaker_pin, OUTPUT);
pinMode(piano_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
//... vorige code hier
else if (sensorValue > 310)
{
tone(speaker_pin, 262);
delay(250);
noTone(speaker_pin);
delay(250);
}
}
Nu kan alla medlemmar i det framgångsrika pojkbandet 5ive spela en knapp på ditt piano!
\pagebreak
Bygg nu den 6:e tangenten till höger om de föregående tangenterna. Använd inte heller parallella motstånd utan 3 10k Ohm seriekopplade motstånd.
| Använd den seriella monitorn för att fastställa värdet på den nya knappen. :————-:|:—————————————-:
| Vilken frekvens får den nya knappen? :————-:|:—————————————-:
Kretsen kommer att se ut så här.
Kretsen för uppgift 6
\pagebreak
const int speaker_pin = 8;
const int piano_pin = A0;
void setup()
{
pinMode(speaker_pin, OUTPUT);
pinMode(piano_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
//... vorige code hier
else if (sensorValue > 210)
{
tone(speaker_pin, 294);
delay(250);
noTone(speaker_pin);
delay(250);
}
}
Den sexbenta subfilen (hexapoda) kan nu spela med ett ben per tangent på ditt piano!
\pagebreak
Komplettera ett piano med sju tangenter genom att lägga till den sjunde knappen till höger. Använd nu 4 motstånd på 10 kOhm kopplade i serie.
| Använd den seriella monitorn för att fastställa värdet på den nya knappen. :————-:|:—————————————-:
| Vilken frekvens får den nya knappen? :————-:|:—————————————-:
Wibi Soerjadi använder vanligtvis fler än sju fingrag