Ik schrijf dit Instructable omdat Bot1398 een Arduino gebruikt en ik heb ze nooit gebruikt. Ik heb niets tegen hen, echter, toen ik begon met behulp van microcontrollers ongeveer 3 jaar geleden, die ik was op zoek naar snelheid en kracht voor een bepaalde toepassing. Ik afgerekend op de PIC Microcontroller-serie van Microchip. Het is verbazingwekkend wat je kunt doen met microcontrollers, kunt u uw verbeelding in werking gestelde wildernis en met een beetje creatieve programmering bereiken precies wat u wilt. Er zijn een aantal programmeertalen daar eveneens, maar toen ik begon wilde ik snelheid en weten precies wat er gaande was bij elke stap, daarom, dat ik koos assembler sinds het leek veel BASIC die ik geleerd op de
terug in de jaren 1980 toen ik opgroeide. Dat is wat dit Instructable inhoudt: PIC Microcontrollers en Assembly Language met een LED (Light Emitting Diode) te detecteren de hoeveelheid omgevingslicht en de numerieke maatregel van dit licht samen met een bargraph op een LCD-scherm weergegeven.
Ik de eerste versie van deze LED gebaseerde licht-Sensing apparaat die werkte produceren, het probleem dat ik zag was dat de waarden sprong rond nogal wat. Dus ik zocht naar een oplossing voor dit probleem die ik dacht na over het gemiddelde van de waarden, maar hoe? Binaire math doet is soort moeilijk maar er is altijd een manier om het gedaan te krijgen. Zoals ik was op zoek naar oplossingen kwam ik een grote pagina over de voortschrijdende gemiddelden en hoe het meest effectief zodat zelfs de 8-bits Microcontrollers kan omgaan met gemak. Hier is de link naar de pagina: Computationeel efficiënt voortschrijdende gemiddelden en dit werkt zeer goed. Deze implementatie wordt weergegeven het zwevend gemiddelde van de laatste 256 lichte lezingen en wordt die waarde samen met een bargraph weergegeven op het LCD-scherm. De bewegende gemiddelde code wordt voorkomen dat de waarde van de LED van springen rond veel leest en geeft u een beter, veel nauwkeuriger resultaat.
Waarom dit werkt
Wanneer een LED dat wij aan een Microcontroller hechten doen we meestal dat het oplichten. In dit geval echter passen eigenlijk wij een positieve spanning aan het negatieve einde van de elektrode. Dit is zodat we van iets genaamd parasitaire capaciteit profiteren kunnen. Toepassing van deze positieve spanning wordt opgebouwd met een kleine vergoeding (bronnen op het internet zeggen binnen over 100-200 nanoseconden) binnen deze parasitaire capaciteit van de LED die wij gebruiken. De werkelijke capaciteit is niet erg belangrijk, maar online resouces zeggen dat er rond 10-15 pF. Wij zullen dan schakelen de pin van de microcontroller die verbonden is met de negatieve eindpunt van de elektrode via een uitvoer naar een INPUT en wachten voor de lading voor de afvoer. Wanneer kosten riool genoeg de pin zal nu lees een logica niveau 0 of laag staat waar we gaan off van de timer en deze waarde gebruiken om te berekenen van het voortschrijdend gemiddelde en de resultaten weergeven op het scherm. Wij nemen meer lezingen en weergegeven op het scherm met het interval dat is geschreven in de montage-code. In de afgewerkte code heb ik deze ingesteld op Neem een lezing over elke 20 of zo microseconden. Dit gebeurt 50 keer zodat een bijgewerkte resultaat wordt weergegeven op het scherm ongeveer elke seconde of zo. De tijd die het duurt om een lezing zal een beetje variëren omdat het duurt langer voor de lading voor de afvoer in een donkere omgeving en dit sneller in lichte omgevingen gebeurt. Het tarief van de geen kwijting van de capaciteit van de LED een of andere manier rechtstreeks betrekking heeft op het aantal fotonen of hoeveelheid licht het LED-licht genereren van elementen. Netjes is het niet. :)
Nu dat we hoe het werkt weten, laten we overgaan naar stap #1.