Stap 2: Breadboarding met de Arduino
Ik begonnen met het verkennen van de geluiden die zijn gemaakt door de tone-functie op de Arduino, toonhoogte, duur en vertragingen wijzigen (voor een goede intro op Arduino, zie deze Ible).
Voor de motor die ben ik begonnen met het controleren van de laagste waarde van de parameter van de worp gespeeld, die lijkt te zijn van 50 (maar draaide zich om ongeveer 100 voor de ATtiny-kern). Ik kreeg het idee om de vertraging tussen de tonen speelde een beetje langer dan de Toon van het voorbeeld toneMelody instellen. Een Toon van 10 ms en een vertraging instellen op 11ms langer geeft het een "motor-achtige rimpel".
Ik maakte een kleine testprogramma veranderen de toonhoogte van twee tonen, op zoek van de combinatie die gaf een klassieker "geluid van het pistool van de ruimte" doet denken aan de StarBird (Zie schets hieronder opgenomen). Als input gebruikte ik twee dubbele tilt switches als input. Op dat moment die was ik nog steeds experimenteren met drie staat schakelaars alleen met behulp van een analoge ingang elke (Zie het circuit diagram), een begrip ik liet later zoals beschreven in de stap op de schakelaar tilt.
De duur en vertragingen waar getest door te wijzigen en het programma opnieuw te uploaden. Ik zag hier dat het was best een paar van ms korter is dan de duur van de Toon voor een soepele geluid voor de vertraging instellen.
Vervolgens voegde ik sommige eenvoudige aan / uit-schakelen van de LED's na het geluid patroon.
Hier is het testprogramma:
/*
StarBird geluid Test
gemaakt van 3 augustus 2012
door masynmachien
Deze code is in het publieke domein.
*/
Const int tonepin = 3; Toon outputpin later moet worden gewijzigd
om te voorkomen bemoeien met uploaden
int thisPitch = 820;
int Pitchdelta = 55;
int tijd = 60;
int timeminus = 57;
VOID Setup {}
Initialiseer seriële communicatie (voor foutopsporing alleen):
Serial.begin(9600);
}
void loop {}
Lees de threestate-schakelaar:
int sensorReading = analogRead(A0);
if(sensorReading > 800)
{
verhogen van de worp toen trok naar 5 V
Als (thisPitch < 20000)
{/ / maximumum pitch
thisPitch = thisPitch + 1;
}
}
else if (sensorReading < 200)
{
verlagen van de worp toen trok naar 5 V
Als (thisPitch > 700)
{/ "/" minimum worp
thisPitch = thisPitch - 1;
}
}
Lees de threestate-schakelaar:
int sensorReading2 = analogRead(A5);
if(sensorReading2 > 800)
{
verhogen van de worp toen trok naar 5 V
Als (Pitchdelta < 10000)
{/ / maximumum pitch
Pitchdelta = Pitchdelta + 1;
}
}
else if (sensorReading2 < 200)
{
verlagen van de worp toen trok naar 5 V
Als (Pitchdelta > 0)
{/ "/" minimum worp
Pitchdelta = Pitchdelta - 1;
}
}
Speel de toonhoogte:
Toon (tonepin, thisPitch, tijd);
delay(timeminus); vertraging in tussen leest voor stabiliteit
Toon (tonepin, thisPitch-(Pitchdelta/2), tijd);
delay(timeminus); vertraging in tussen leest voor stabiliteit
Toon (tonepin, thisPitch-Pitchdelta, tijd);
delay(timeminus); vertraging in tussen leest voor stabiliteit
Toon (tonepin, thisPitch-(Pitchdelta/2), tijd);
delay(timeminus); vertraging in tussen leest voor stabiliteit
Serial.println(thisPitch);
Serial.println(Pitchdelta);
}