In diesem Artikel beschreibe ich eine einfache Methode um zu testen, ob alle Pins des Espruino Microcontrollers korrekt verlötet sind. Dies erleichtert später das Debuggen, da man ausschließen kann, dass der Fehler an einer falschen Lötstelle liegt.
Erklärung
Um den Espruino schneller verkabeln zu können und trotzdem eine feste und zuverlässige Verbindung zu haben, bietet es sich an, die 20 Pins jede Seite des Microcontrollers mit einem Pin-Strip zu verlöten. Damit ist es dann problemlos möglich, mit male-to-female Jumper Wires einen Servo u.v.m. mit dem Espruino direkt zu verdrahten. Dies erhöht die Übersichtlichkeit und man spart Platz auf dem Breadboard. Wie das verlöten funktioniert hat Gordon Williams in einem Video anschaulich erklärt. Ich zeige euch hier, wie man prüfen kann, dass das Verlöten mit dem Lötkolben korrekt funktioniert hat.
Schaltungsaufbau
Verbindungsübersicht
Servo | Kabel Espruino |
schwarz | GND |
rot | Bat |
gelb | B13 (und andere Pins) |
Programmcode
Das Programm steuert nun alle Pins (außer: GND, Bat, 3.3 und die LED-Pins: A13, A14 und A15) an und sendet einen Puls, der einen Servo in Bewegung setzt. Der Daten-Anschluss (gelbes Kabel im Schaltungsbild) wird nun auf jede der geschaltenen Pins gesteckt. Bewegt sich der Servo, ist die Verlötung korrekt erfolgt. Andernfalls muss an der entsprechenden Pin nachgebessert werden.
//PIN Test var servoPos = [0]; //aktuelle Position des Servos function getPositions() { var t = getTime(); servoPos = [ 0.5+Math.sin(t)*0.5]; } //Servo bewegen function moveServos() { digitalPulse(A0,1,1+E.clip(servoPos[0],0,1)); digitalPulse(A1,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C0,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C1,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C2,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C3,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C12,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C15,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B12,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B9,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B8,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B7,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B6,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B5,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B4,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B3,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B2,1,1+E.clip(servoPos[0],0,1)); digitalPulse(A10,1,1+E.clip(servoPos[0],0,1)); digitalPulse(A9,1,1+E.clip(servoPos[0],0,1)); digitalPulse(A8,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C11,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C10,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C9,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C8,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C7,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C6,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C5,1,1+E.clip(servoPos[0],0,1)); digitalPulse(C4,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B15,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B14,1,1+E.clip(servoPos[0],0,1)); digitalPulse(B13,1,1+E.clip(servoPos[0],0,1)); } setInterval("getPositions();moveServos()", 50);