Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall

Relevanta dokument
RAPPORT: DIGITALA PROJEKT

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Digitala Projekt(EITF40) - Larm

Digitala projekt - Radiostyrd bil

Digitalt Projekt: Radiostyrd Bil

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Bilen som inte kan krocka

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Thunder s Truck projektrapport

Projektlaboration 4, synkronisering av klockan

Växtviskaren EITF11 Digitala projekt VT15, I12

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Effektpedal för elgitarr

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

Projektrapport i Digitala projekt EITF11. Institutionen för Elektro- och informationsteknik, Lunds tekniska högskola

Pulsmätare Digitala Projekt EITF11

Digitala Projekt (EITF11) Hemlarm

DIGITALA PROJEKT (EITF40) Fartmätare

Projektrapport - Roterande digital LED-klocka

The Intelligent Timer

Digitala Projekt (EITF11) Larmanläggning

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Projektrapport - RoboWalter

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

The Phenomenal Doorbell Bilaga 2. Källkod

Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Pulsmätare med varningsindikatorer

Projektrapport Målgång

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

High Core Remote Car X8000 Cool

LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel

Digitala Projekt(EITF40) - Larm

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

Linjeföljare Digitala projekt Johan Engström e02je Henrik Persson e02hp

TEMPERATURMÄTARE MED GRAFRITARE

1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5

Programmera i teknik - kreativa projekt med Arduino

Digitala Projekt. Chip Quiz. Projektmedlemmar: Olov Nordenstam och Linus Hägerbrand. Grupp 9

Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Datorteknik 2 (AVR 2)

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

ELEKTRO- OCH INFORMATIONSTEKNIK. Radiostyrd bil. EITF11 Digitala Projekt. Thomas Bergsten & Marcus Halbauer

EITF11 - Digitala Projekt

Rapportsammanfattning. Optima Sous Vide

DIGITALA PROJEKT Väderstation

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Digitala Projekt VT13. PING-Pong

Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Marcus Skog. Reaktionsspel EITF11

Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall

Rafiki Wa Kupanda. EITF11, Digitala projekt VT18. Linnea Håkansson, Anton Gunneberg, Ruben Schultz

Källkod. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define green_diode PD5. #define RS PD4

EITF11: Bandkanon Grp 05

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Tidsstyrd persiennöppnare

Whac A mole. Ett rektionstest i kursen Digitala Projekt EITF11 utfört av: Axel Spångberg I10 Marcus Witting I10. Handlett av: Bertil Lindvall

Digitala projekt Linjeföljande bil

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

AVR 5. Styrning av trafikljus. Digitala system 15 p

Arduinokurs. Kurstillfälle 4

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

PROJEKT STAFFAN STALLEDRÄNG

Datorteknik 1 (AVR 1)

Digitala Projekt (EITF11)

Helena Harrysson och Linnéa Wickberg

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

GPIO - General Purpose Input Output

DEPARTMENT OF INFORMATION TECHNOLOGY. Digitala Projekt. Redovisning av Projekt - Grupp 14

Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson

JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén

Aml Abbas, Ali Darwish, Ehsanolah Hafezi, Fatima Zahra Doussi Grupp 15

Rapport Digitala Projekt EITF Grupp 12 Elin Blomstergren, Victor Sundgren Handledare: Bertil Lindvall. Fyra i rad

Kontrollskrivning Mikrodatorteknik CDT S2-704

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Enkla datatyper minne

Om konsolporten. Beskrivning av portarna

ATU. Användarmanual. Larmöverföringsenhet Firmware Version

Att programmera arduinon

ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC Handledare Bertil Lindvall

Projektrapport - Feststation

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

EIT. Digitala projekt EITF11. Larmanläggning. Handledare Bertil Lindvall Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10

Transkript:

2013 Lunds Tekniska Högskola I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall DIGITALA PROJEKT The objective of the course Digital Project is letting a group of students construct an electronic unit. This group chose to construct a RC-vehicle which was to be controlled by a computer. The plan was to connect the computer to an own constructed control and then let the control, through radio transceivers, communicate commands to the car. The group never got the radio communication to work and had to solve this through wire communication instead. The report describes the working process and all the challenges the group met throughout the project.

Innehållsförteckning Inledning... 3 Målsättning... 3 Metod... 4 Hårdvara... 4 Mjukvaran... 5 Resultat... 5 Svårigheter... 6 Slutsats... 6 Appendix... 7 1.1 Manual till bilen... 7 1.2 C-kod, kontrollen... 9 1.3 C-kod, bilen... 14 1.4 Kopplingsschema... 20 2

Inledning Digitala projekt är en kurs vars syfte är att ge en grupp studenter möjligheten att under sju veckors tid konstruera en fungerande elektronisk enhet. I detta ingår planering och konstruerande av själva hårdvaran samt planering och implementering av mjukvaran som utgörs av programkod. I denna rapport redovisas hur gruppen gått tillväga vid byggandet av en radiostyrd bil. Det ursprungliga målet som gruppen satte upp, var att m.h.a. en dator styra den radiostyrda bilen. Detta skulle uppnås genom att konstruera två olika enheter. Dels en enhet som hade direkt kontakt med datorn, i denna rapport benämnd kontrollen, och dels en enhet som utgjordes av själva radiostyrda bilen, i denna rapport benämnd bilen. Kommunikationen mellan kontrollen och bilen skulle åstadkommas m.h.a. radiosändare, något som gruppen misslyckades med. Kommunikationen skapades istället av sladdar som kopplades mellan kontrollen och bilen. Målsättning Gruppens ursprungliga målsättning med projektet var att skapa en radiostyrd bil som skulle kunna styras m.h.a. en dator. Datorn skulle vara kopplad till en kontroll som bestod av dels en processor samt dels en radiosändare. Kontrollen skulle sedan i sin tur kommunicera med bilen via dess radiomottagare. Signalerna från kontrollen skulle snappas upp av bilens radiomottagare för att sedan tolkas m.h.a. processorn som sedan skulle utföra ett önskat kommando. Nedan följer den ursprungliga kravspecifikationen: Ursprungliga krav Den radiostyrda bilen skall kunna styras från en separerad enhet. D.v.s. trådlöst. Den radiostyrda bilen skall kunna köra både framåt och bakåt. Den radiostyrda bilen skall kunna svänga både höger och vänster. Den radiostyrda bilen skall kunna tända och släcka strålkastare. Den radiostyrda bilen skall ha bromsljus. Den radiostyrda bilen skall kunna bjuda på en överraskning. 3

Metod För att åstadkomma ett så lyckat resultat som möjligt valde gruppen att dela upp arbetet i fyra tydliga faser. Dessa var: - Fas 1: Planera och bygga ihop hårdvaran. - Fas 2: Åstadkomma kommunikation mellan datorn och kontrollen. - Fas 3: Åstadkomma kommunikation mellan kontrollen och bilen. - Fas 4: Programmera mjukvaran. Vid avslutandet av varje fas lades stort fokus på att varje fas hade levererat önskat resultat. Gruppen insåg snabbt att om exempelvis inte hårdvaran fungerade perfekt varje gång så skulle arbetet med mjukvaran försvåras avsevärt. Hårdvara Com-port Denna användes för att möjliggöra kommunikationen mellan datorn och kontrollen. Kort sagt är en com-port en seriell port, vilket menas med att informationen som sänds från datorn skickas en bit i taget. Maxim multichannel RS-233 Maxim:en möjliggör kommunikationen mellan com-porten och processorn på kontrollen vilket krävs, eftersom de arbetar med olika spänningar. Processorn ATmega16 ATmega16 är en mikroprocessor med ett programminne på 16 kb, vilket var fullt tillräckligt för både kontrollen och bilen. Den stora fördelen med denna processor är att den stödjer SPI (Serial Peripheral Interface) vilket har använts vid sladdkommunikationen mellan kontrollen och bilen. Motorerna Motorerna som använts i bilen är två 6 volts likströms motorer. Dessa levererar egenskaper likt en pansarvagn, d.v.s. att de två motorerna kan snurra åt önskat håll samtidigt. H-brygga L298N H-bryggans funktion på bilen är att leverera ström till motorerna vilket krävs eftersom processorn strömleveransförmåga är otillräcklig. Andra viktiga egenskaper hos H-bryggan som gruppen använt sig av är dess förmåga att driva de två motorerna oberoende av varandra samt i olika hastigheter. Radiosändarna Parallax 433 MHz Rf Tranciever (Används inte) Oerhört enkel och lättanvänd radiosändare som arbetar med en frekvens på 433 MHz. Planen var att en skulle fästas på kontrollen och en på bilen och sedan låta dem sköta kommunikationen. Detta fungerade ej, varför dessa ej finns med i den färdiga enheten. Bra 4

egenskaper med denna variant är att den stödjer seriell kommunikation samt att den kräver väldigt lite ström, vilket hade varit fördelaktigt eftersom vår bil går på batterier. I appendix 1.4 finns kopplingsschema som beskriver hur all hårdvara har kopplats ihop. Mjukvaran I appendix 1.2 finns C-koden till kontrollen. Kortfattat gäller det att koden för kontrollen är skriven så att den tar emot tecken från Hyperterminalen. Om tecknet motsvarar ett tecken som skall få bilen att agera, exempelvis W som för bilen framåt, så översätts tecknet till en specifik siffra. När informationen mottagits från Hyperterminalen så skall en sändning med siffran genomföras. För att åstadkomma denna sätts kontrollen (master) till High samtidigt som bilen (slave) sätts till Low, vilket gör att en sändning nu är möjlig. Därefter skickas siffran till bilen. I appendix 1.1 finns en manual för hur man använder kontrollen via Hyperterminalen. I appendix 1.3 finns C-koden till bilen. Bilen avvaktar tills dess att kontrollen initieras för mottagning av information. När denna initiering sker tas siffran som skickas från kontrollen emot och översätts till ett kommando som får bilen att antingen röra sig på ett specifikt sätt eller dess lampor att lysa på ett specifikt sätt. Korta förklaringar till de flesta kommandona för att förklara koden ytterligare. Resultat Ursprungliga krav Avklarat Anledning Lösning Den radiostyrda bilen skall kunna styras från en separerad enhet. D.v.s. trådlöst. Nej Störningar i luften, icke tillräckligt avancerade radiosändare samt tidsbrist. Kommunikation m.h.a. sladdar. Den radiostyrda bilen skall kunna köra både framåt och bakåt. Ja Den radiostyrda bilen skall kunna svänga både höger och vänster. Ja Den radiostyrda bilen skall kunna tända och släcka strålkastare. Ja Den radiostyrda bilen skall ha bromsljus. Ja 5

Den radiostyrda bilen skall kunna bjuda på en överraskning. Ja Ett ljusspel involverande samtliga lysdioder skapades. Bonusfunktioner Avklarat Anledning Lösning Den radiostyrda bilen skall kunna blinka både höger och vänster. Ja Löses med delays Den radiostyrda bilen skall kunna öka samt sänka hastigheten. Ja Löses med delays Den radiostyrda bilen ska kunna släcka/tända samtliga lampor samtidigt med en knapp. Ja Svårigheter Den första svårigheten under detta projekt var medlemmarnas oerhört tunna kunskapsbas vid början av projektet. Detta medförde att klantiga misstag gjordes men framförallt att befintliga problem tog på tok för lång tid att finna. Ett exempel på detta var när det tog två dagar, innehållandes omlödningar och omprogrammeringar, för att inse att kontrollens processor hade gått sönder. Denna övergripande svårighet löstes dock relativt snabbt m.h.a. diverse datablad och vår handledare. Den största svårigheten under projektet var att få radiosändarna att fungera. Detta arbete spenderade gruppen ungefär två veckor på och var tillslut tvungna att ge upp p.g.a. tidsbrist. Det huvudsakliga problemet låg i att radiosändaren på bilen, som var programmerad till att ta emot data, tog emot massor av brus utifrån. Detta brus gjorde det oerhört svårt att avgöra när det som sändes faktiskt kom från kontrollen eller när det kom utifrån. Slutsats Trots att gruppen inte fullt ut uppnådde alla förutbestämda mål så anses resultatet lyckat. Få gånger har en kurs varit så givande. Främst i form av kunskap, där gruppen lärt sig om hur elektriska enheter är uppbyggda, hur man programmerar i C och hur man bygger en hårdvara. Utöver det så har gruppen lärt sig om hur mycket arbete som ligger bakom skapandet av en tillsynes enkel produkt. Alltifrån vikten av planering, problemlösningsförmåga, tålamod och samarbete. Vidare så har gruppen, den hårda vägen, lärt sig att hantera när saker inte blir som de är tänkta och hur mycket mer arbete som krävs än vad en bra tidsplanering någonsin kan påvisa. Slutligen skulle gruppen vilja tacka sin handledare Bertil Lindvall för dennes tålamod och engagemang och rekommendera kursen till alla som vill lära sig mer än enbart teori på LTH. 6

Appendix 1.1 Manual till bilen 1. Starta hyperterminalen på din dator. 2. Välj den COM-port som kontrollen är inkopplad i. 3. Välj 9600 bit per second, 8 data bits, parity none, 1 stop bits och none på flow control. Caps W S Aktivera/Avaktivera Framåt Bakåt 7

A Vänster D Höger Q Snurra vänster E Snurra höger 1 Öka hastighet 2 Minska hastighet 3 Ställ in standard hastighet F Slå på strålkastare Z Ljusshow P Tänd Alla Lampor (mellanslag) Stanna bilen 8

1.2 C-kod, kontrollen #include <avr/io.h> #include <inttypes.h> #define CSN_LOW() PORTB &= ~ (1 << PB4); //slave select låg #define CSN_HIGH() PORTB = (1 << PB4); //slave select hög unsigned short int transmit; void USARTInit(uint16_t ubrr_value) //initiering av USART UBRRL = ubrr_value; UBRRH = (ubrr_value>>8); UCSRC=(1<<URSEL) (3<<UCSZ0); UCSRB=(1<<RXEN) (1<<TXEN); char USARTReadChar() information //hämta while(!(ucsra & (1<<RXC))) //do nothing return UDR; unsigned short int USARTWriteChar(char data) //skriv data till USART 9

while(!(ucsra & (1<<UDRE))) //do nothing if(data == 'W') //inmade bokstäver speglas tillbaka via com-porten. En kommandosiffra skickas till bilen via SPI UDR = 'W'; return 1; else if(data == 'A') UDR = 'A'; return 2; else if(data == 'S') UDR = 'S'; return 3; else if(data == 'D') UDR = 'D'; return 4; else if(data == 0x20) UDR = 'G'; //mellanslagstangenten returnerar G return 5; else if(data == 'E') UDR = 'E'; return 6; else if(data == 'Q') UDR = 'Q'; return 7; 10

else if(data == '1') UDR = '1'; return 8; else if(data == '2') UDR = '2'; return 9; else if(data == '3') UDR = '3'; return 10; else if(data == '4') UDR = '4'; return 11; else if(data == '6') UDR = '6'; return 12; else if(data == 'F') UDR = 'F'; return 13; else if(data == 'P') UDR = 'P'; return 14; else if(data == 'Z') UDR = 'Z'; return 15; else 11

UDR = data; return data; void SPI_MasterInit(void) //initiering av SPI för master DDRB = (1 << PB4) (1 << PB5) (1 << PB7); DDRB &= ~ (1 << PB6); SPCR = (1 << SPE) (1 << MSTR) (1 << SPR0) (1 << SPR1); void SPI_transmit(unsigned short int transmit) CSN_LOW(); //slave sätts till låg SPDR = transmit; //sparar transmit på SPDR och startar överföringen while (!(SPSR & (1 << SPIF))); //väntar till lyckad sändning CSN_HIGH(); //slave sätts till hög void main() SPI_MasterInit(); //initiera master CSN_HIGH(); char data; USARTInit(51); //räknas ut UBRR-värdet mha boadrate, bitstorlek och processorfrekvens while (1) data = USARTReadChar(); transmit = USARTWriteChar(data); //läs av från USART, skriv sedan på transmit if(transmit < 16 && transmit > 0) //skicka endast vidare styrkommandon via SPI SPI_transmit(transmit); 12

else //gör ingenting 13

1.3 C-kod, bilen #define F_CPU 8000000 #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> //pga klockfrekvens på 8Mhz unsigned int direction, speed; unsigned short int recieve; #define CSN_LOW() PORTB &= ~ (1 << PB4); #define CSN_HIGH() PORTB = (1 << PB4); void SPI_slaveInit(void) slaven(bilen) //SPI initiate för DDRB = (1 << PB6); SPCR = (1 << SPE) (1 << SPR0); //enable SPI void Drive(int direction) //sätter på motorerna while (!(SPSR & (1 << SPIF))) //kör ända tills ny information från master är mottagen PORTA = direction; //ställer in motorerna efter önskad riktining _delay_ms(speed); //beroende på fart stannar motorerna olika länge PORTA = 0x12; //stannar motorerna _delay_ms(speed); if(direction == 0x12) 14

togglelight(0b01000000); //om direktion = stanna så togglas bakljusen av när nytt kommando ges void togglelight(int light) lamporna PORTD = PORTD ^ light; void blinkinglights(int lights) lampor int k; for(k = 0; k < 7; k++) //toggla av/på //blinka togglelight(lights); _delay_ms(500); k++; void lightshow() //ljusshow med diverse blinkningar och snurr int k; PORTD = 0xff; _delay_ms(500); PORTD = 0x00; _delay_ms(50); PORTD = 0xff; _delay_ms(50); PORTD = 0x00; for(k = 0; k < 2; k++) blinkinglights(0xff); 15

for(k = 0; k < 11; k++) togglelight(0b01000000); _delay_ms(50); togglelight(0b01010000); _delay_ms(50); togglelight(0b00110000); _delay_ms(50); togglelight(0b00100100); _delay_ms(50); togglelight(0b00001100); _delay_ms(50); togglelight(0b00001000); PORTA = 0x1B; _delay_ms(2000); PORTA = 0x12; togglelight(0b01000000); _delay_ms(500); togglelight(0b01000000); for(k = 0; k < 5; k++) togglelight(0b01000000); _delay_ms(50); togglelight(0b01100100); _delay_ms(50); togglelight(0b00100100); PORTD = 0xff; _delay_ms(500); PORTD = 0x00; void enginecontrol(void) //omtolkning av insignaler till motorsignaler if (recieve > 0 && recieve < 16) 16

switch (recieve) case 1: Drive(0x1E); case 2: Drive(0x16); case 3: Drive(0x33); case 4: Drive(0x1A); case 5: PORTD = 0x40; Drive(0x12); case 6: Drive(0x1B); case 7: Drive(0x36); case 8: if(speed < 4) att hastigheten inte understiger 1 speed = speed - 3; //kör framåt //kör vänster //kör bakåt //kör vänster //tänd bakljus //stanna //snurra vänster //snurra höger //kolla så //minska hastigheten case 9: 17

orginalhastighet höger vänster strålkastare speed = speed + 3; case 10: speed = 24; case 11: blinkinglights(0b00001000); case 12: blinkinglights(0b00010000); case 13: togglelight(0b00100100); //öka hastigheten //sätt //blinkers //blinkers //slå på case 14: togglelight(0b11111111); //toggla alla lampor case 15: lightshow(); //ljusshow! unsigned short int SPI_recieve(void) master //ta emot signaler från while (!(SPSR & (1 << SPIF))); return SPDR; 18

void main() SPI_slaveInit(); //initiera SPI DDRA = (1 << PA0) (1 << PA2) (1 << PA3) (1 << PA5); PORTA = (1 << PA1) (1 << PA4); //enable motors DDRD = (1 << PD0) (1 << PD2) (1 << PD3) (1 << PD4) (1 << PD5) (1 << PD6); //initiera lamporna direction = 0; //sätter riktningen till 0 speed = 24; //anger starthastighet (delay) while (1) recieve = SPI_recieve(); enginecontrol(); //skickar in mottagen signal i enginecontrol 19

1.4 Kopplingsschema 20