Stap 8: Software
De servo is gecontroleerd door een 50 Hz software PWM. Servo's van verschillende fabrikanten hebben lichtjes verschillend PWM puls breedte min/max-waarden. Het is belangrijk dat deze dienovereenkomstig worden aangepast. De servo kan anders beschadigd raken als het herhaaldelijk over zijn grenzen is gereden.
De piezo vereist een frequentie in het kHz bereik. De AVR's hardware PWM wordt gebruikt om te rijden.
Een van de kanalen van de ADC wordt gebruikt om de uitvoer van de microfoon-versterker. Wanneer een bepaalde drempel is bereikt, wordt het hoofd verkeer wordt geactiveerd. Verschillende microfoons hebben een impact op de uitgang van de versterker. Het reactieniveau is instelbaar in software. Mijne is zo ingesteld dat het normale gesprekken negeert, maar het krijgen's geactiveerd wanneer dingen krijgen opgewonden. Het is ook een goede niezen detector. :-)
De ADC wordt afgelezen van een ADC-interrupt. Als deze interrupt handler actief terwijl de PWM timer onderbreken geactiveerd is, kan het een lichte jitter kennismaken met de PWM. Deze jitter kan de servo te verplaatsen een beetje, die genoeg lawaai naar trigger geluid detector produceert. Er zijn twee mogelijke oplossingen voor dit probleem. Zou men niet een interrupt gebruikt voor de ADC en lezen in een lus wachten in plaats daarvan. Dit kan een beetje lastig en lelijk. In plaats daarvan is de huidige oplossing om gewoon uitschakelen van de servo PWM pols, terwijl het hoofd niet in beweging. Dit zal veranderen van de motor, energie besparen en PWM jitter zal niet veroorzaken geen problemen. In het algemeen is het geluid detectie is alleen actief terwijl de Android rustig is, zoals elke morsecode piept of hoofd verkeer ook leiden het tot zou.
Een van de acht morsecode berichten wordt steekproefsgewijs gespeeld. Wikipedia heeft een groot artikel van de morsecode . Het alfabet van de Morsecode is gecodeerd in een tabel waarin ASCII-tekens naar de overeenkomstige Morse-signalen met behulp van een twee-bit codering vertaalt. De werkelijke morsecode berichten kunnen daarvoor worden opgeslagen gemakkelijk te lezen en ruimte efficiënte ASCII-reeks.
De broncode kan worden gecompileerd en geprogrammeerd in de MCU-wit de gratis AVR Studio IDE. Er zijn ook open source alternatieven.