Stap 9: Oplossen van problemen en het verkennen van de code
Ten eerste, laten we sorteren uit wat ik vermoed zullen uw enige probleem; de ultrasone sensor lijkt niet te werken.
Wij moeten te weten komen als we iets van de sensor eerste krijgen. Om te beginnen het oplossen van problemen, eerst controleren of dat alle 4 kabels correct zijn aangesloten op zowel de sensor zelf en aan de arduino.
Nog geen vreugde?
Probeer te kijken naar de code die u via verzonden. Hoewel de ultrasone sensor de waarde van een variabele leest, het 2 verschillende staten voor de motor triggers: zowel gaan vooruit of een vooruit en één achteruit. Hier is de code voor de voorwaartse staat:
VOID vooruit()
{
toekomen @ volle snelheid
digitalWrite (12, laag); Instellen van de richting van kanaal A
digitalWrite (9, laag); Losraken van de rem voor kanaal A
analogWrite (3, 255); Draait de motor op kanaal A op volle snelheid
digitalWrite (13, hoge); Instellen van de richting van kanaal B
digitalWrite (8, laag); Losraken van de rem voor kanaal B
analogWrite (11, 255); Draait de motor op Channel B op volle snelheid
}
Van bovenaf, kunt u zien dat 3 variabelen zijn ingesteld voor elke motor. De richting kan worden ingesteld op laag of hoog voor elk kanaal teneinde de voorwaartse richting. Dit is een codering alternatief voor het sorteren van de voorwaartse standaardstatus van de motoren in plaats van het ruilen van de draden voor de betrokken kanalen fysiek.
Nu moeten we kijken naar de code voor de tweede staat. Ik heb deze turn_right maar echt dit willekeurig, afhankelijk van hoe de motor is aangesloten en het gebruik van HIGH & LOW om in te stellen van de motor richtingen genoemd.
Hoe is dit belangrijk voor de meting van de ultrasone sensor? Als de code voor beide motor staten precies hetzelfde is dan de ultrasone sensor kan doen alles goed en roepen de juiste opdrachten op de juiste tijden. Door te kijken naar de code, zal dit blijken (nu dat je weet wat je zoekt!). Het vindt niets meer dan de richting om de instelling wijzigen voor pin 12 en pin 13 van HIGH/LOW het tegenovergestelde.
Als het probleem hierdoor niet wordt opgelost, moeten we een kijkje nemen op wat de ultrasone sensor ziet. Het stukje code in vraag hier is de volgende:
VOID oneSensorCycle()
{
voor (uint8_t ik = 0; ik < SONAR_NUM; i ++) {}
Serial.Print(i);
Serial.Print("=");
Serial.Print(cm[i]);
Serial.Print ("cm");
}
Serial.println();
}
Eerder in de code is er een andere verwante stuk:
VOID Setup {}
Serial.begin(9600);
Ik zeg dit zodat kunt u er zeker van te nemen in de alle aanpassingen die u zou kunnen in de code aanbrengen.
Deze seriële sectie van de code is opgenomen zodat kunt u een uitlezing van de waarden van uw sensor. Dit geldt voor elke sensor en code u vindt (het is vrij eenvoudig om code te vinden voor vrij veel elke compatibele arduino-sensor).
Om te zien de waarden moet u tampon ter uw arduino door USB opnieuw en open de Arduino IDE. Zodra open, zorg ervoor dat je arduino wordt gezien door uw computer (Tools > seriële poort > Kies poort). Controleer ook of opnieuw de Arduino Uno-bestuur is geselecteerd in de Tools > Pension menu.
Wij willen controleren wat de sensor ziet en er zijn 2 manieren van de lancering van de seriële Monitor waarmee ons om dit te doen. U kunt ofwel "Serial Monitor" in het menu Extra of kunt u het via de knop die eruit ziet als een vergrootglas boven rechts van de Arduino IDE. Door te kiezen voor een van beide, moet u de robot onderbreken voor een tweede en geef een uitlezing in het venster Serial Monitor. Als de gelezen waarden niet schommelen vanaf 0cm dan moet u opnieuw controleren de verbindingen op de arduino en de sensor weer. U kan hebben vermengd GND/5V of Trigger/Echo pinnen.
Als deze suggesties niet van uw probleem oplossen ik zou zeer verbaasd zijn en kan alleen maar suggereren dat het is mogelijk dat ergens langs de weg u kan hebben een of andere manier verwijderd wat kritische code of misschien niet in de volledige code voor de Arduino IDE geplakt? Probeer ervoor te zorgen dat u hebt gekopieerd en geplakt van de volledige code in de IDE voor het uploaden van het aan de Arduino UNO.
Als u andere vragen hebt, kunt u commentaar en ik zal proberen om het antwoord op de problemen in een update.