Elektronische dobbelsteen met de ATtiny2313

Vergelijkbare documenten
ES1 Project 1: Microcontrollers

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

NCV 2.1 Nixie Klok. extra montage aanwijzingen

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

ATmega op het web (1)

Digibytez Website: E mail: Handleiding LED dobbelsteen

Handleiding. DBMK101 LED dobbelsteen. Versie 2.0 (augustus 2013) Digibytez Website:

Software Defined Radio m

Handleiding. DBMK100 Mini LED dobbelsteen. Versie 1.0 (februari 2012) Digibytez Website:

B3C 70cm converter besturing. v PE5PVB bar.net bar.net

AVR USB Programmer smoerijf.be/avr

Stoeien met de tabellen (deel 4) Met multiplexers dobbelsteen 5 bouwen: tabel naar keus

ES1 Project 1: Microcontrollers

LED decay

NUMITRON DICE

LED FADER

Inhoudsopgave LED dobbelsteen

100 jaar LED flasher

Twinkle star

Project DTMF ATV Repeater besturing voor PI6HLM

Technology, Innovation & Society Delft

LED POWER FLASHER

by illumicon CTCSS encoder Pietershoek XA Veldhoven The Netherlands fax

LED VU METER

LED STROBOSCOOP

Ringspiraal Stalen zenuwen en Arduino als scheidsrechter

CAN-tester Met uitgebreide mogelijkheden

Handleiding. DBMK103 Simon Says. Versie 1.0 (Augustus 2014) Digibytez Website:

Locobuffer Handleiding

ID-er/sequencer. Beschrijving. Pag 1/6

Stuiterlicht Een project van de Service Kring JOTA-JOTI. Handleiding Stuiterlicht en Batterijtester bouwpakket.

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

Versterkerschakeling (voor Sound Box)

Inhoud: Voorwoord. Dankwoord. Het LED-bordje. Onderdelen. Bouwbeschrijving

BI COLOUR FLASHER

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Dagprogramma kennismaking met PBA EICT Campus De Nayer

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Shield V 1.0. Montage handleiding (voor dummies)

Bouwpak ket Escape robot. Productinformatie: Benodigd gereedschap voor de bouw van de Escape robot: Stuklijst elektronische onderdelen:

12.1 Input/output-kaart IOK. Informatieblad 12 input/output-kaart versie 1.0. Beperking aansprakelijkheid

Zelfbouw frequentieteller

Bouw je eigen minicomputer

PROJECT 1: Zorgen voor veilig voedsel - koelkastalarm Blz. 1/6

Waterorgel. Printplaat

RCL Arduino Workshop 1

Praktijk Elektrotechniek:

BOUWBESCHRIJVING LASERGAME Mk II

Pocket Pong Oeroude game in moderne hardware

Deel 8: stappenmotoren en interrupts

Bouwbeschrijving. c HCC Forth gg. Willem Ouwerkerk. 3 juli 2004 I 2 C 2.00

Inleiding elektronica Presentatie 1

DRAWDIO. Welk gereedschap heb je nodig? BBZZZ.. 1. Soldeerbout 2. Tang 3. Soldeerdraad. Een pen waarmee je muziek tekent!

The Pointer Handleiding The Pointer bouwpakket. Een project van de Service Kring JOTA-JOTI.

4. Sluit de connectoren (L) aan, die zich aan de achterkant van de hoofdstructuur bevinden zoals wordt getoond in de figuur.

Beschrijving JUBI-game. Inleiding

Rad van fortuin Solid-state uitvoering met 20 LED s

Handleiding: instelling en werking E-Drive LCD display

Arduino CURSUS. door Willy - 09-juni-2017

Programmering Tiny45 voor de DCC locdecoder

Bouwbeschrijving UniSAI

Gebruik in geen geval soldeervet!!!! Dit zal uw print en de componenten beschadigen.

Frequentieteller met middenfrequent aftrek

"THEREMIN" De elektronische muziek-ufo

POPPIX-80. Bouwbeschrijving

ES1 Project 1: Microcontrollers

Bouwbeschrijving. Servo Decoders

Speurneus voor verborgen RFID-zenders

TECHNOLOGIE TECHNIEK. Vervangende opdracht voor produceer de sleutelhanger. H.O. Boorsma.

De AVR Microcontroller programmeren met GCC

A Quick Start Guide: AVR programmeren

Antan IIIa HF antenne-analyser Mhz bouwpakket FRAG 2013

Bouwbeschrijving. Servo Decoders

Edushield 2.0 Bouwbeschrijving

Handleiding: instelling en werking LCD display t.b.v. ombouwset 007 en prolithium Daily Driver, Juice, Stick, Heavy Duty, Hammer en Monster

Trek de pennenrijen en hun tegendelen weer uit elkaar zodat je componenten aan de experimenteerprint kan toevoegen.

Bouwbeschrijving Input print

OC32 Event Input Upgrade

Montage handleiding voor DCC/Power shield. Schema:

JoyCon Modificatie Handleiding. Door: XxWiReDxX. Dutch / Nederlands. Versie 1.0

BAT DETECTOR Een project van de Service Kring JOTA-JOTI.

Bouwbeschrijving. Servo Decoders

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Aan de slag met het E-blocks Starter Pack

Het inbouwen van het FX335 printje met CTCSS decoder en subtoon encoder in de CONDOR 16. PDF-versie. Rev:

Projectwerk microcontrollers:

stap 1 Pak de Lunchbox uit En controleer of je alle componenten hebt~ Als je vragen hebt, neem dan contakt op met: info@unitunlikely.

Vervanging van de back-up batterij van de DARES Xstream pagers.

4.- REGELEN VAN DE WEERSTAND TIJDENS HET ROEIEN (Mod. R-56, R-57)

Workshop Arduino voor beginners. door TkkrLab Enschede

Programmeren met Arduino-software

DDDAC1794 TENT DACmodule

Bouwbeschrijving Input print

Elektronica bouwen met M.T.S. LEGEO modulen

Werkbladen voor Arduino workshop 1

Useless Machine. Saxion Hogeschool Enschede ACT Kunst en Techniek Project Creative Solutions

NEWTONE. The Plus. 1 Inleiding

lees deze handleiding lees en werk zorgvuldig. voor vragen kunt u ons bereiken op:

Transcriptie:

lektor post Project No. 0 Tiny dobbelsteen Elektronische dobbelsteen met de ATtiny Florian Schäffer (Duitsland) Deze eenvoudige elektronische dobbelsteen is een ideaal beginnersproject voor degenen die voor het eerst een soldeerbout gaan hanteren. Dit project biedt een ongevaarlijke kans om te oefenen met het bestukken van printen. De beloning voor het werk is een elektronische dobbelsteen, waarvan we niet eens de ogen hoeven te tellen, omdat het geworpen getal meteen decimaal wordt weergegeven. Comfortabeler kan het niet! Onze schakeling simuleert een dobbelsteen. Bij het indrukken van een toets begint de dobbelsteen te rollen en geeft hij verschillende toevallige getallen tussen en weer; na een tijdje blijft één cijfer op het LED-display staan. Met het oog op de geschiktheid voor beginners zijn alle SMD s verbannen en zijn alleen bedrade componenten toegepast. Dobbelsteen-schakeling Zoals te zien is in figuur zijn een druktoets en een 7-segment LED-display verbonden met de I/O-pennen van een microcontroller van Atmel. De acht weerstanden R...R8 begrenzen de stroom door de LED s. Een eenvoudige vaste spanningsregelaar maakt uit de batterijspanning van 9 V een stabiele V voor de schake- ling. C4 dient voor de contactdenderonderdrukking. Met de druktoets wordt de dobbelsteen geworpen. Als we de schakeling een tijdje niet gebruiken, wordt het display donker om de batterij te sparen. De LED van de decimale punt geeft aan dat de schakeling is ingeschakeld. De dobbelsteen is in de Elektor-shop verkrijgbaar als bouwkit []. De geprogrammeerde controller wordt meegeleverd. De controller maakt gebruik van de geïntegreerde RC-oscillator op 8 MHz. In werkelijkheid is de klokfrequentie maar MHz vanwege de interne deelfactor van :8. Een extern kristal voor de klokgenerator is dus niet nodig. Pullupweerstand R9 zorgt dat de hoogohmige resetingang van de microcontroller stevig hoog (=inactief) blijft. lektor post Project No. 0

lektor post Project No. 0 +V Pullup intern 0k R9 4 5 7 8 9 0 RST IC PB0/AIN0 PD/ICP PB/AIN PD5/T PB ATtiny(A) PD4/T0 PB/OC PD/INT PB4 PD/INT0 PB5/MOSI PD/TXD PB/MISO PD0/RXD PB7/SCK XTAL GND XTAL 4 0 5 9 8 7 C 00n R R R R4 R5 R R7 9 7 5 4 b c d e f a g 0 R8 S C4 00n LD SC9- dp CC CC 8 MCP700-00 +9V IC +V C C u u 50 - Figuur. Schema van de elektronische dobbelsteen met Atmel-microcontroller. Broncode Het dobbelsteen-programma in listing is gemaakt met de gratis toolchain WinAVR [] en de bijbehorende GCC-compiler. Het is gecompileerd voor controllers van het type ATtinyA. De software werkt als volgt: Omdat een microcontroller geen echte toevalsgenerator bevat, wordt gebruik gemaakt van een snelle, permanent doorlopende teller (8-bits timer) om pseudo-willekeurige getallen te genereren. Elke keer dat op de toets wordt gedrukt, worden twee interrupts gegenereerd (indrukken en loslaten). Bij elke tweede interrupt starten we een lus die (met steeds groter wordende tussentijden) getallen van... weergeeft en zo de dobbelstenen simuleert. Na het doorlopen van de lus wordt de stand van de continu op de achtergrond lopende teller afgevraagd en omgerekend naar een getal van... (rest bij delen door bepalen en daarbij optellen). Het resultaat wordt continu weergegeven: dit is de geworpen waarde. Omdat niemand weet wat de tellerstand is op het moment van indrukken en de teller te snel loopt om een gewenste waarde te raken, is valsspelen onmogelijk. De aan te sturen segmenten voor de cijfers 0...9 liggen vast in de code; alleen de cijfers... worden gebruikt. Door het programma te veranderen zouden we ook andere cijfers of zelfs letters kunnen weergeven. Programmeren Zoals al eerder vermeld zit in de bouwkit een geprogrammeerde controller. Maar natuurlijk kunnen we deze ook herprogrammeren, bijvoorbeeld met een gewijzigd programma. De code wordt met een tekst-editor ingevoerd en dan vertaald naar machinetaal (gecompileerd). Het resulterende hex-bestand wordt met een geschikt programma zoals AVRDUDE [] in het flash-geheugen van de microcontroller geschreven. Daar is nog wel wat hardware voor nodig. Naast een programmer, bijvoorbeeld de Atmel AVR-ISP MK, is nog een kleine programmeer-adapter met IC-voet nodig. Die kunnen we snel even bouwen op een stukje gaatjesprint (zie figuur ). Met deze hardware kunnen we het programma in de microcontroller steeds opnieuw overschrijven. Bij het programmeren van microcontrollers moeten we ook rekening houden met de fuses, waarmee de controller wordt geconfigureerd lektor post Project No. 0

50- V.0 lektor post Project No. 0 4 ISP 5 0k MOSI MISO SCK RESET R9 4 5 7 8 9 C 00n 0 RST IC PB0/AIN0 PD/ICP PB/AIN PD5/T PB ATtiny(A) PD4/T0 PB/OC PD/INT PB4 PD/INT0 PB5/MOSI PD/TXD PB/MISO PD0/RXD PB7/SCK XTAL GND XTAL 4 0 5 9 8 7. Plaats het onderdeel op de componentenzijde van de print. Zie de componentenopstelling bij de onderdelenlijst.. Verhit met de punt van de soldeerbout de aansluitdraad en het soldeervlak op de print ca. ½ seconde.. Voer soldeertin toe vanaf de andere kant. 4. Haal eerst het soldeertin en daarna de bout weg als de soldeer gesmolten is (na ca. seconde). 5. Controleer de las.. Knip de overtollige lengte van de aansluitdraad af. GND 50 - Figuur. Kleine programmeer-adapter met zespolige ISP-aansluiting. (bijvoorbeeld voor het inschakelen van de interne oscillator). Voor dit project gebruiken we gewoon de standaard-instellingen en hoeven we ons over de fuses niet te bekommeren. De opbouw Solderen: als de temperatuur van de soldeerbout instelbaar is, kiezen we 50...70 C voor klassieke loodhoudende soldeer (wat voor zelfbouwprojecten heel handig is) of ongeveer 80 400 C voor loodvrij soldeertin. Volgorde van bestukken: Buig de aansluitingen van de onderdelen op maat met een platbektang. Buig niet te dicht bij de behuizing.. Weerstanden (richt de kleurringen uit van links naar rechts).. Condensatoren (let op de waarden).. Druktoets. 4. IC-voet (let op de markering voor pen ). 5. 7-segment-display (let op de oriëntatie van de decimale punt).. IC (let op de oriëntatie). Druk het onderdeel niet te dicht op de print, maar laat ongeveer 5 mm ruimte tussen de print en de onderkant van de component. Anders treden grote buigkrachten op, die het onderdeel intern kunnen beschadigen. 7. Batterij-clip (voer de kabel van te voren door Onderdelenlijst Weerstanden: R..R8 = 9 Ω, 5 %, ¼ W R9 = 0 k Condensatoren: C,C = µ, folie, steek 5 mm C,C4 = 00 n, keramisch, steek /0 Halfgeleiders: IC = ATtinyA, geprogrammeerd IC = MCP700 LD = 7-segment LED-display SC9 Diversen: S = druktoets met maakcontact, voor printmontage Batterijclip voor 9 V-batterij IC-voet voor IC, 0-polig Print 50- Bouwpakket: 50-7 50- V.0 Figuur. De volledig bestukte printplaat van de dobbelsteen. lektor post Project No. 0

lektor post Project No. 0 de gaten voor de trekontlasting; polariteit: zwart = GND, rood = 9 V). Eindcontrole: Controleer na het bestukken alle soldeerlassen. Zijn er aansluitingen vergeten? Zijn er koude lassen? Zijn er kortsluitingen door soldeerresten of draden? Controleer nogmaals de polariteit van de batterij en de oriëntatie van IC. De print moet er na de opbouw uitzien zoals in figuur. Sluit nu een batterij aan, zonder dat IC in het voetje zit. Nu moet de decimale punt oplichten. Als dat niet gebeurt, begint het favoriete werk van elektronici: foutzoeken. Als alles tot zover oké is, gaan we verder: Verwijder de batterij. Zet het geprogrammeerde IC voorzichtig in het voetje. Pen (markering) wijst naar de batterijkabels. Controleer of alle pennen zuiver boven de gaten van het voetje zitten. Als dat niet zo is, buig ze dan een beetje bij. Druk het IC voorzichtig en gelijkmatig in het voetje met twee vingers en enige kracht, tot het goed op zijn plaats zit. Sluit de batterij weer aan. Druk op de druktoets... En daar gaan we! Veel plezier met dit project! Weblinks [] Webpagina bij dit project: www.elektormagazine.nl/articles [] WinAVR: http://sourceforge.net/projects/ winavr/ [] AVRDUDE: www.nongnu.org/avrdude/ (50) Listing. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> // _delay_ms() // IRQ int main (void); volatile uint8_t roll=0; volatile uint_t zeit=0; const int8_t numbers [0] = /* A F B G E C D */ 0b00, // 0 0b000000, // 0b000, // 0b000, // 0b0000, // 4 0b000, // 5 0b00, // 0b00000, // 7 0b0, // 8 0b000, // 9 ; // 0..9: connection the ports binary to the segments. High active /** */ @brief IRQ function will be called on IRQ @ PCINT. Make the dice rolling lektor post Project No. 0 4

lektor post Project No. 0 #if defined ( AVR_ATtiny ) ISR (PCINT_vect) #elif defined ( AVR_ATtinyA ) ISR (PCINT_B_vect) #else #error Not supportet AVR #endif uint8_t i=0; roll++; // how often the IQR was called? PCINT knows only toggle on key // will be called twice each key pressed // we need only one IRR to roll the dice if (roll == ) roll=0; // start again counting for (i=; i < 40; i++) // simulate rolling PORTD = numbers[(i % )+]; // Output. Counter Modulo = 0-5 => + = - _delay_ms(i*); PORTD = numbers[(tcnt0 % )+]; // Output. Counter Modulo = 0-5 => + = - zeit=0; // Count time to switch off LED s start again /** @brief main @param none @return end state */ int main(void) PORTD = 0; DDRD = 0xFF; DDRB &= ~( << DDB0); PORTB = ( << PB0); // PORTD complete off // PORTD complete as output // B0 Input // Pull Up aktiv TCCR0B = ( << CS0) ( << CS00); // 8 Bit Timer, Prescaler CLK/04 =>.000.000/5 =,9 khz // => 0,0005 s/impuls => x5 > all 0,05 s overflow GIMSK = ( << PCIE); // PCIE IRQs enable PCMSK = ( << PCINT0); // IRQ @ PB0 enable sei(); // IRQs on while () // endless // Loop to switch off the display in x seconds for (zeit=0; zeit <=00; zeit++) // 00x00=0.000 ms = 0 seconds _delay_ms(00); PORTD = 0; // all segments off return ; // never lektor post Project No. 0 5