Stap 5: Het maken van de ATtiny praten aan u
In het geval van de Arduino, kunt u een seriële verbinding met uw computer en de monitor waarden met behulp van de seriële Monitor hebben. Helaas hebben niet onze ATtiny zulke vermogens ingebouwde omdat het ontbreekt een FTDI chip voor seriële communicatie. MAAR we niet hoeven te worden verdrietig over dat: We kunt implementeren software gebaseerde seriële communicatie op onze ATtiny en "misbruik" onze Arduino als seriële doorstuurserver. Daardoor kunnen we de ATtiny praten met ons via de Arduino (en de andere manier rond als we moeten dat).
Gelukkig, we hebben niet om dit te implementeren op onszelf sinds Martin Thomas en Colin Gittins een aardige bibliotheek gemaakt en zet het op github: avr-softuart. Wij zullen dit gebruiken om het maken van een programmaatje voor onze ATtiny die sommige testwaarden via seriële doorsturen naar onze computer met behulp van onze Arduino zal overbrengen. U kunt dit later te gebruiken in uw eigen programma voor sommige basic "zuiveren".
Een woord van waarschuwing: "softuart" implementeert UART mogelijkheden in software, waardoor het veel trager dan hardware geïmplementeerde UART. Het betekent ook dat uw ATtiny doen sommige zware werk moet tijdens het verwerken van de seriële communicatie. Daarom adviseer ik gebruikend "softuart" alleen tijdens het debuggen van uw project.
Laten we beginnen met ons programma voor de ATtiny. In eerste instantie zullen we voor het downloaden van de avr-softuart -bronnen van de github repository. Zullen we het volgende omvat:
--
#include < avr/io.h >
#include < avr/interrupt.h >
#include < util/delay.h >
#include "softuart.h"
--
In de fie softuart.h moet u de SOFTUART_TXBIT instellen in lijn 18 tot en met de juiste pin (in ons voorbeeld wij troep op voor PB1). In de hoofdlus starten we seriële communicatie met de volgende instructies:
--
softuart_init();
softuart_turn_rx_off(); We ontvangen seriële data niet
Sei(); Hierdoor kunnen interupts, die nodig zijn voor softuart
--
De rest is vrij eenvoudig. Bijvoorbeeld, als u wilt verzenden een teken kunt u bellen softuart_putchar('c'); het teken 'c', die worden verzonden. U kunt ook het verzenden van tekenreeksen en, als u stdio.h opneemt, kunt u ook getallen printf-indeling verzenden. U kunt kijken naar de voorbeelden hebben in main.c voor softuart van github repository.
Echter, adviseer ik zo eenvoudig, klein en snel mogelijk te houden. Dit betekent dat je moet niet bevatten stdio.h en gebruik van printf , aangezien het ongeveer 1.5 kB van uw flash-geheugen duren zal. Daarom moet u een functie die stuurt van gehele getallen als tekenreeksen implementeren. Ik heb gedaan in het tweede voorbeeld voor deze tutorial en kunt u de volledige code in de github repository. Het programma schrijft alleen integers tussen-128 en 127 seriële out. U kunt downloaden, compileren en uploaden van de code naar uw ATtiny.
Nu hebben we onze "praten" programma op de ATtiny, moeten we bereiden de Arduino te ontvangen deze seriële data en stuurt het via USB naar onze computer zodat we de uitvoer op een seriële monitor kunt lezen. De code is werkelijk eenvoudig en je moet het ook downloaden vanaf de github repository. Alleen binnenkomende seriële data met software seriële ontvangt van een bepaalde pin (10) met een baud-rate van 2400 (trage software seriële!) en stuurt haar door naar onze computer via hardware seriële met een baud-rate van 115200 (snelle USB!). Deze code uploaden naar je Arduino en u kunt doorgaan met het werkelijk eenvoudig bedrading schema hierboven samen te stellen het hele ding.
Wanneer u uw Arduino op uw USB-poort aansluit, zal de ATtiny beginnen met het verzenden van de seriële data aan de Arduino, die het naar onze computer doorsturen zal. Nu kunt u de seriële Monitor in de Arduino IDE of programma's zoals scherm of minicom te lezen van de output. Hierdoor kunt u zien wat er gebeurt in uw ATtiny met behulp van slechts 1 pin en een Arduino!
Ik hoop dat deze tutorial zal u maken van slimme ATtiny-programma's die van slechts een fractie van de ruimte en de energie die nodig is door een Arduino gebruikmaken helpen. U kunt hebben een blik bij het volgende project voor een voorbeeld over hoe analoge om sensorgegevens te lezen van een versnellingsmeter te detecteren wanneer een apparaat is aangetast: attiny-soundcube