Stap 4: Vaardigheid niveau: Basic. (2)
- PIËZO-ZOEMER (spelen tonen & TUNES)
- Eenvoudige set-up van het circuit zie foto's, hier speelt u een melodie en liedje/deuntje door een wijziging van de frequentie en de toonhoogte van de elektrische zoemer Ga naar voorbeelden op uw IDE blik op digital en selecteer Toon/Melody en probeer het uit.
- CODE VOOR CAN-CAN TUNE ONDER DEZE LIJN ___
int noteFreqArr [] {} =
49,4, 52,3, 55,4, 58,7, 62,2, 65,9, 69,9, 74, 78,4, 83,1, 88, 93,2, 98,8, 105, 111, 117, 124, 132, 140, 148, 157, 166, 176, 186, 198, 209, 222, 235, 249, 264, 279, 296, 314, 332, 352, 373, 395, 419, 444, 470, 498, 527, 559, 592, 627, 665, 704, 746, 790, 837, 887, 940, 996, 1050, 1110, 1180, 1250, 1320, 1400, 1490, 1580 1670, 1770, 1870, 1990, 2100};
lange modus = 0;
void setup {pinMode (4, OUTPUT); / / een pincode voor uitvoer van de zoemer instellen}
VOID playNote (lange noteInt, lange lengte, lange modus, lange adem = 25) {lengte = lengte - adem; lange noteInt2 = noteInt + 12; //1 octaaf omhoog lange noteInt3 = noteInt + 24; //2 octaven van lange noteInt4 = noteInt + 36; //3 octaven van lange playLoop = lengte / 100; //divide lengte door 4, voor gebruik in de afspeelvolgorde if(mode == 0) {//mode 0 volgorde voor (lang ik = 0; ik < playLoop; i ++) {buzz (4 noteFreqArr [noteInt], 20); delay(5); Buzz (4, noteFreqArr [noteInt2], 20); delay(5); Buzz (4, noteFreqArr [noteInt3], 20); delay(5); Buzz (4, noteFreqArr [noteInt4], 20); delay(5); }} anders if(mode == 1) {//mode 1 volgorde voor (lang ik = 0; ik < playLoop; i ++) {buzz (4, noteFreqArr [noteInt3], 20); delay(5); buzz (4, noteFreqArr [noteInt4], 20); delay(5); buzz (4, noteFreqArr [noteInt3], 20); delay(5); buzz (4, noteFreqArr [noteInt4], 20); delay(5);}} anders if(mode == 2) {//mode 2 volgorde voor (lang ik = 0; ik < playLoop; i ++) {buzz (4, noteFreqArr [noteInt3] 20); delay(5); Buzz (4, noteFreqArr [noteInt3], 20); delay(5); Buzz (4, noteFreqArr [noteInt3], 20); delay(5); Buzz (4, noteFreqArr [noteInt2], 20); delay(5); {}} else if(mode == 3) {//mode 3 volgorde voor (lang ik = 0; ik < playLoop; i ++) {buzz (4, noteFreqArr [noteInt4], 40) delay(5) buzz (4, noteFreqArr [noteInt2], 40); delay(5);}} if(breath > 0) {//take een korte pauze of 'adem' als de opgegeven delay(breath);}}
void loop {//main cursus playNote (12, 500, modus); playNote (5, 1000, modus); playNote (7, 250, modus); playNote (10, 250, modus); playNote (9, 250, modus); playNote (7, 250, modus); playNote (12, 500, modus); playNote (12, 500, modus); playNote (12, 250, modus); playNote (14, 250, modus); playNote (9, 250, modus); playNote (10, 250, modus); playNote (7, 500, modus); playNote (7, 500, modus); playNote (7 250, modus); playNote (10, 250, modus); playNote (9, 250, modus); playNote (7, 250, modus); playNote (5, 250, modus); playNote (17, 250, modus); playNote (16, 250, modus); playNote (14, 250, modus); playNote (12, 250, modus); playNote (10, 250, modus); playNote (9, 250, modus); playNote (7, 250, modus); playNote (5, 1000, modus); playNote (7, 250, modus); playNote (10, 250, modus); playNote (9, 250, modus); playNote (7, 250, modus); playNote (12, 500, modus); playNote (12, 500, modus); playNote (12, 250, modus); playNote (14, 250, modus); playNote (9, 250, modus); playNote (10, 250, modus); playNote (7, 500, modus); playNote (7, 500, modus); playNote (7, 250, modus); playNote (10, 250, modus); playNote (9, 250, modus); playNote (7, 250, modus); playNote (5, 250, modus); playNote (12, 250, modus); playNote (7, 250, modus); playNote (9, 250, modus); playNote (5, 250, modus); delay(250); if(mode == 0) {modus = 1;} else if(mode == 1) {modus = 2;} else if(mode == 2) {modus = 3;} anders if(mode == 3) {modus = 0;}}
VOID buzz (int targetPin, lange frequentie, lange lengte) {lange delayValue = 1000000/frequentie/2; / / berekening van de vertragingswaarde tussen overgangen / / / 1 seconde het waard van microseconden, gedeeld door de frequentie, dan splitsen in tweeën sinds / / / er zijn twee fasen aan elke cyclus lange numCycles = frequentie * lengte / 1000; / / het getal berekenen van cycli voor juiste timing / / / vermenigvuldigen frequentie, die is echt cycli per seconde door het aantal seconden aan / / / krijgen het totale aantal cycli te produceren voor (lang ik = 0; ik < numCycles; i ++) {/ / voor de berekende lengte van tijd... digitalWrite(targetPin,HIGH); / / Schrijf de zoemer pin hoog te duwen uit de diaphram delayMicroseconds(delayValue); / / wachten voor de vertraging van de berekende waarde digitalWrite(targetPin,LOW); / / schrijven de zoemer pin lage zich terugtrekken van de diaphram delayMicroseconds(delayValue); / / wait againf of de berekende vertragingswaarde}}
- (Geen noodzaak voor het downloaden van elke bibliotheek hiervoor gewoon kopiëren en plak deze op uw IDE in een lege schets en sla het op als het kan-kan vervolgens uploaden en probeer het uit, persoonlijk vinden het erg vervelend tune toen speelde zeker krijgt iemands aandacht echter)
- Knop te drukken (mogelijkheid om toe te wijzen knoppen voor meer command & control vermogen van)... Knop te drukken & toewijzing, om te beginnen enkele knop als een aan/uit knop op wanneer gedrukt vandoor wanneer vrijgegeven, gevolgd door duel knop toewijzing instellen als een uit-knop en de tweede een een op knop, waardoor de oprichting van een controle pad voor robot systemen, bijvoorbeeld in een 5button pad omhoog/omlaag/links/rechts en een actieknop in het midden.
- Volg de foto's en Bekijk de video's om de draad van het circuit hebt u problemen verwijzen naar online bronnen voor het omzetten van de knop met de arduino, Controleer altijd uw bedrading voordat u het omhoog en draaien op uw bord dan dubbel te controleren als een kortsluiting kan dodelijk uw apparatuur in seconden vooral met meer hoogspanning toepassingen... Onder deze regel voor het instellen van de knoppen ___ (voor één knop SETUP) ___ codering / *
Knop schakelt in en uit een oplichtende diode(LED) aangesloten op digital pin 13, bij het indrukken van een drukknop aangesloten op Pen 2. Het circuit: * LED op grond van pin 13 aangesloten * drukknop verbonden met pin 2 van + 5V * 10K Ohm weerstand zijn verbonden met pin 2 vanaf de grond * Opmerking: op de meeste Arduinos bestaat al een LED op het bord aangesloten op pin 13. gemaakt van 2005 door DojoDave 30 Aug 2011 gewijzigd door Tom Igoe deze voorbeeldcode in het publieke domein is. http://www.Arduino.CC/en/tutorial/button *
/ constanten niet gewijzigd. Ze gebruikt hier om / / set pincodes: const int buttonPin = 2; het nummer van de drukknop pin const int ledPin = 13; het nummer van de LED-pin
variabelen zal veranderen: int buttonState = 0; variabele voor het lezen van de drukknop status
void setup {/ / initialiseren op de pin van de LED als uitgang: pinMode (ledPin, OUTPUT); / / initialiseren van de drukknop pin als input: pinMode (buttonPin, INPUT);}
void loop {/ / Lees de stand van de drukknop waarde: buttonState = digitalRead(buttonPin);
Controleer als de drukknop ingedrukt is. Als het is, de buttonState is hoog: als (buttonState == HIGH) {/ / LED inschakelen: digitalWrite (ledPin, hoge);} anders {/ / LED uitzetten: digitalWrite (ledPin, laag);}}
(Voor DUEL KNOPINSTELLING) ___ int ledPin = 13; Kies de pin voor de LED int inputPin1 = 3; knop 1 int inputPin2 = 2; knop 2 void setup {pinMode (ledPin, OUTPUT); / / LED als de uitgang pinMode verklaren (inputPin1, INPUT); / / maken knop 1 een input pinMode (inputPin2, INPUT); / / maken van knop 2 een input {void loop {als (digitalRead(inputPin1) == LOW) {digitalWrite (ledPin, laag); / / uitzetten LED} anders als (digitalRead(inputPin2) == LOW) {}
digitalWrite (ledPin, hoge); Zet LED op {{}
U kunt kopiëren en langs het bovenstaande met knoppen die zijn gekoppeld aan de juiste pinnen, met pull-down weerstanden moet ervoor zorgen de knoppen reageren zo op en uit, niet alleen op voortdurend.
(Foto weerstand SETUP) Enige wat makkelijk te instellen, verbinding maken met uw LED aan op de juiste pin verklaard in de code die volgt binnenkort, het foto-weerstand moet worden gekoppeld in een weerstand ook foto's, en wordt gemeten door een analoge pin 0, tenzij u deze als een andere pin is ingesteld, de pin leest het inkomend signaal van de weerstand en vertalen naar volt voor de LED vervaagt het effectief met de veranderingen in licht , ik was in een redelijk lichte kamer zo nodig had voor het gebruik van de extreme nabijheid was ook er een barst in de foto-weerstand die zijn functie nog aangetast maar werkte nog genoeg om te laten zien en me leren hoe het werkte en de codering te controleren en meten van inkomende lichtintensiteit...
CODERING na deze regel ___ //PhotoResistor Pin
int lightPin = 0; de analoge pin de photoresistor //connected om //the fotoweerstand is niet gekalibreerd naar alle eenheden is dus //this gewoon de waarde van een ruwe sensor (relatieve licht is) //LED Pin int ledPin = 9; de pin die de LED is aangesloten op de //we beheert helderheid zodat //we gebruiken een van de PWM (pulse breedte / / modulatie pinnen) void setup {pinMode (ledPin, OUTPUT); //sets de led pin aan output} / * * loop - deze functie wordt gestart nadat Setup is voltooid * is voltooid en herhaalt u vervolgens * / void loop {int lightLevel = analogRead(lightPin); //Read de / / lightlevel lightLevel = kaart (lightLevel, 900, 0, 0, 255); //adjust de waarde 0 tot 900 //span 0 tot en met 255
lightLevel = beperken (lightLevel, 0, 255); //make ervoor dat de //value is betwween //0 en 255 analogWrite (ledPin, lightLevel); Schrijf de waarde}
Sorteren van hoeveelheid code niet te ingewikkeld en gebruiken vertrouwde functies zoals de analoge pinnen en er mini & max waarden,, gebruikelijke vertraging van pinnen en er modi, nieuwe functies zijn lichte niveau constanten 0,900,0,255 enz zoals hierboven gezien.