Stap 10: Verbeteringen door de Gemeenschap Instructables
Deze stap is bedoeld voor het delen van verbeteringen gemaakt door Instructables lezers.Handshaking - door "spiralout11235"
De eerste verbetering is van "spiralout11235" (slim gebruikersnaam!) die seriële handshaking tussen de schets Processing en Arduino (voor raster gravure) heeft geïmplementeerd. Dit elimineert de noodzaak voor het instellen van vertragingen in de verwerking schets. Bovendien, de Arduino schets PWM-controle functies van laservermogen, en een paar andere wijzigingen die u ziet als u goed door de code kijkt.
Hij heeft vriendelijk aangeboden om zijn ideeën en code te delen. Hier zijn zijn opmerkingen:
Arduino schets: versie 4.0 Handshake
Processing schets: 2.0 Handshake
Versie notities: Handshaking wordt nu geïmplementeerd: hoeft niet langer te vertragingstijden instellen in verwerking. Dit betekent Arduino en Processing gegevens verzenden en ontvangen als de andere klaar is. Verwerking wacht totdat het seriële gegevens ontvangt: SerialEvent() activeert en leest tot het regeleinde '\n'. Dus's Serial.print () tot Serial.println() de hele opdracht van Arduino is. (Alleen foto's zwart-wit; geen grijstinten)
1. Arduino println's uit een "A" en wacht op verwerking om te ontvangen dit en stuur het terug. "Tot stand gebrachte verbinding".
2. Arduino stuurt een "1" om aan te geven dat het klaar voor de "linelength" van de volgende set van instructies is.
3. als Processing "1" ontvangt dan stuurt (linelength + 10) (reden uitgelegd in code).
4. Arduino verwacht linelength nu. Leest-serie als het gaat en linelength schrijft = linelength-10. Arduino stuurt "2" signalering klaar voor instructie blok.
5. als Processing "2" ontvangt, stuurt het achtereenvolgens het volgende blok van de instructie.
6. Arduino ontvangt instructies blok en blijft lezen van elke byte tot numBytes = linelength (verwachte aantal bytes) als fundamentele garantie van volledige gegevens
7. Herhaal stap 2-6 totdat alle instructie sets worden verzonden.
Bovendien, ik aangesloten op een knop en een Pot
-Wanneer de Arduino voorsprong opwaarts, terwijl er wordt gezocht naar verwerking om te starten (establishContact() functie), kan het de gebruiker een knop om te schakelen van de laser op; het percentage van 'on' wordt bepaald door de lezing van de Pot. Nadat Setup is voltooid, worden de knop/pot niet gebruikt.
-Dit kon ik instellen de laser huidige draw/beperken (bij max Pot) evenals line-up van mijn doelgroep (op lage Pot)
-Knop: één zijde aan de grond, pin 12, ene zijde die is ingesteld op INPUT_PULLUP
-Pot (10k of iets hoog genoeg niet te blazen van de pin (20mA mij)): 1 daartoe 5V, de andere met Gnd, het midden, waarop analoog (A0) of pin 14
* Na afloop van setup wordt laser macht bepaald door de gedefinieerde variabele laserPercentage
Laser controle moet op pin 10 (of om het even welk met PWM) voor analogWrite() te werken. Als u niet over een Pot echter gewoon feed pin 14 5V beschikt dus laser op volle kracht ingesteld.
De bestanden Processing en Arduino zijn in het "Handshake.zip" bestand hieronder.
Als u delen uw verbeteringen of suggesties willen zou, stuur me een bericht (via Instructables of getburnt1 en ik kan uploaden naar deze stap.