Inhoudsopgave:

3 eenvoudige ATTiny-vakantiegeschenken - Ajarnpa
3 eenvoudige ATTiny-vakantiegeschenken - Ajarnpa

Video: 3 eenvoudige ATTiny-vakantiegeschenken - Ajarnpa

Video: 3 eenvoudige ATTiny-vakantiegeschenken - Ajarnpa
Video: 3 простых изобретения с автомобильным генератором 2024, November
Anonim
3 eenvoudige ATTiny-vakantiegeschenken
3 eenvoudige ATTiny-vakantiegeschenken

Elk jaar rolt de vakantieperiode rond en ik kom vast te zitten over wat ik voor mijn vrienden en familie moet geven. Mensen zeggen altijd dat het beter is om het cadeau zelf te maken dan het in een winkel te kopen, dus dit jaar heb ik dat gedaan. De eerste geeft een naam of basisafbeelding weer wanneer deze door de lucht wordt gezwaaid, de tweede vervaagt soepel tussen twee witte led's (hij heeft ook een veiligheidsspeld om hem aan kleding of een tas te bevestigen), en de derde is een soort sfeerlicht, scrollend naadloos tussen kleuren. Ze kosten allemaal minder dan $ 15 en zijn eenvoudig in minder dan een uur te monteren. U kunt deze instructies en onderdelen ook cadeau doen aan iemand die geïnteresseerd is in het leren van elektronica.

Opmerking: Er wordt uitgegaan van een basisniveau van solderen. In tegenstelling tot mijn vorige instructable zal ik echter verdoezelen hoe een AVR te programmeren. Ik hoop echt dat dit mensen helpt die proberen aan de slag te gaan in de elektronica. Ik weet nog dat ik daar was en zal graag al uw vragen beantwoorden. Onthoud dat domme vragen niet bestaan! Ik heb het aan u opengelaten om te bepalen hoe u uw printplaat gaat indelen in de hoop dat u een nieuwe manier zult bedenken om de eenvoudige circuits weer te geven die ik heb getekend. Post alsjeblieft foto's als je klaar bent, ik kan niet wachten om te zien wat je bedenkt! Onderdelen voor alle projecten N = aantal projecten x N ATTiny45 (www.digikey.com) x N 8-pins DIP-aansluiting (RadioShack) x 1 Large Perf Board (ik heb de mijne bij RadioShack) x N 3v knoopcelbatterij en houder (RadioShack) x1 Programmer (ik gebruik deze en de meegeleverde makefile zal worden geconfigureerd om deze te gebruiken) x2 N Weerstanden, een 10 ohm en een 10k ohm (RadioShack) Hier is een foto van de drie voltooide projecten:

Stap 1: De naamflitser

De naamflitser
De naamflitser
De naamflitser
De naamflitser
De naamflitser
De naamflitser

Overige onderdelen x5 DIFFUSED 3 mm LED's (RadioShack) Dit project maakt gebruik van doorzettingsvermogen om een afbeelding of tekst weer te geven wanneer deze snel wordt verplaatst. Het werkt beter als het donker is. Met de AVR schakelen we sneller tussen LED's dan het oog kan zien, we kunnen een beeld in de lucht creëren met heel weinig componenten. De Code: (Download het.zip-bestand onderaan de pagina voor de code, makefile, enz. (Die code heeft niet de uitgebreide opmerkingen die deze code wel heeft, maar als deze code niet werkt, probeer dan die in de zip-bestand)) #define F_CPU 1000000 #include #include void dispClear() { PORTB = ~0b00000000; } int main() { DDRB = 0xFF; // Voor degenen onder u die C nog nooit hebben gelezen voordat de dubbele schuine streep een opmerking aangeeft. Dit stelt de pinnen van de avr in als een output char x = 10; //x wordt gebruikt om de vertragingslengte in te stellen. Het verhogen van de waarde geeft een langzamere omschakeling tussen pixels, afnemend, een lagere while(1) //While(condition is true); {Doe dit} (Waar in C is 1) { PORTB = ~0b00010001; // De naam van mijn vriend is Zoe, dus ik heb de karakters op ruitjespapier getekend en ze vervolgens in PORTB ingevoerd. De eerste drie nullen doen er niet toe omdat er maar vijf led's zijn aangesloten. Een één op een van de resterende vijf velden geeft aan dat de LED aan is, een nul, uit. _delay_ms(x); // vertraging in milliseconden PORTB = ~ 0b00010011; _delay_ms(x); PORTB = ~0b00010101; _delay_ms(x); PORTB = ~0b00011001; _delay_ms(x); PORTB = ~0b00010001; _delay_ms(x); dispClear(); //Open spatie tussen karakters _delay_ms (x); PORTB = ~0b00001110; _delay_ms(x); PORTB = ~0b00010001; _delay_ms(x*3); PORTB = ~0b00001110; _delay_ms(x); dispClear(); _delay_ms(x); PORTB = ~0b00011111; _delay_ms(x); PORTB = ~0b00010101; _delay_ms(x); PORTB = ~0b00010001; _delay_ms(x); dispClear(); _delay_ms(x*5); //Het woord is gedaan, dus voor de duidelijkheid. Ik heb een grotere spatie tussen de woorden } } Volg nu de instructies op pagina 4 om deze code te compileren en naar je AVR te sturen.

Stap 2: Het portemonneelampje

Het portemonneelicht
Het portemonneelicht
Het zaklampje
Het zaklampje

Overige onderdelen x2 LED's NIET DIFFUSED (RadioShack) Dit project vervaagt soepel tussen twee LED's. Mijn moeder wilde dat er iets in haar tas zou komen om haar 's nachts te laten zien. Ik had het gevoel dat een knipperend fietslicht te veel aandacht zou trekken, dus maakte ik dit. Het maakt gebruik van PWM (Pulse Width Modulation) om het effect van dimmen en oplichten te geven. Wat er feitelijk gebeurt, is dat de led met verschillende tussenpozen sneller knippert dan het oog kan zien om een verandering te simuleren. Je kunt dit duidelijker zien als je het in je gezicht zwaait zoals je zou doen met de Name Flasher. De code is onderaan deze pagina te downloaden. Zie pagina 4 voor informatie over het compileren naar uw AVR. In plaats van de code hier te becommentariëren, zal ik het concept kort uitleggen. PWM wordt gegenereerd door een timer. Elke klokcyclus telt de timer één op. Wanneer het een bepaalde waarde bereikt (in dit geval OCR1B), verandert het de status van een pin (in dit geval OC1B). Om de LED's te laten "uitschakelen" heb ik de andere aangesloten op [OPPOSITE]OC1B (dat is wat de balk aan de bovenkant betekent). Vervolgens gebruiken we x om de tijdsduur dat de LED's branden te verhogen en te verlagen.

Stap 3: De kleurenscroller

De kleurenscroller
De kleurenscroller
De kleurenscroller
De kleurenscroller

Overige Onderdelenx1 RGB LED (diffuus is beter) (RadioShack) Dit is voor mij een klassieker. Ik ben altijd al gefascineerd geweest door dit soort lampen en vind ze erg rustgevend, dus ik wilde er natuurlijk een maken. Ook hun zichtbaarheid in de samenleving geeft hen een echte WOW-factor. "Heb je dat GEMAAKT?!" De code is bijna hetzelfde en naar mijn mening gemakkelijker te lezen. U kunt de onderaan downloaden. Deze keer bieden we een PWM-pin voor elke aardingspin op de RGB-LED. Op deze manier vermalen we door de chip heen. Volt kan worden gemeten als het verschil tussen twee punten. 3v-0v=3v 5v-2v=3v ***3v-3v=0v*** Dit laatste is wat we doen als we de chip doorgronden. Als er aan beide kanten drie volt staat, is er bijvoorbeeld niet genoeg volt om een LED aan te sturen. Dus om te vervagen tussen kleuren kozen we een kleur en een andere kleur. Stel een gelijk aan x en de andere gelijk aan 255-x of de INVERSE van x. Zoals we deden in het vorige project. Ga nu naar stap 4 om te programmeren.

Stap 4: Programmeren

Programmeren
Programmeren

Download en installeer eerst Emacs, avr-gcc en Avrdude en eventuele afhankelijkheden. Op Arch linux deed ik dit met: sudo pacman -Sy emacs avrdude

Nu is het tijd om je programmer aan te sluiten op je avr. Sluit de pinnen op de 6-pins ISP-programmer (afbeelding hieronder) aan op de bijbehorende pinnen op uw AVR (Datasheet, pagina 2) (ik deed dit op een breadboard). Sluit nu de programmer aan op uw computer en raak ZEER SNEL de bovenkant van de AVR aan. Als het heet is, VERWIJDER DE PROGRAMMER DIRECT VAN UW COMPUTER. Controleer uw verbindingen en probeer het opnieuw (Voeding en Gnd omgekeerd?). Als het niet heet is, open dan emacs en druk op Ctl-x Ctl-f om het.c-bestand te vinden. Open het en druk vervolgens op Meta(Meestal Alt)-x en typ compileren. Druk tweemaal op enter en als je geluk hebt, zou je AVR nu je code moeten uitvoeren! Bedankt voor het lezen! Ik hoop dat je het leuk vond en er iets van geleerd hebt. Aarzel niet om vragen te stellen en vergeet niet om foto's te plaatsen van wat je bedenkt. Fijne feestdagen en vergeet niet te stemmen!

Aanbevolen: