The Phenomenal Doorbell Bilaga 2. Källkod

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

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

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

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

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

Digitala Projekt(EITF40) - Larm

Digitala Projekt(EITF40) - Larm

Digitala Projekt (EITF11) Larmanläggning

Växtviskaren EITF11 Digitala projekt VT15, I12

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

Projektrapport Målgång

DIGITALA PROJEKT (EITF40) Fartmätare

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

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

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

TEMPERATURMÄTARE MED GRAFRITARE

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

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

Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall

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

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

THE VISUAL EGGTIMER. Skola: Lunds Tekniska Högskola Institution: Elektro- och informationsteknik Kurs: Digitala projekt (EITF11)

Digitala Projekt (EITF11) Hemlarm

EITF11 - Digitala Projekt

Thunder s Truck projektrapport

DIGITALA PROJEKT - EITF11

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

RAPPORT: DIGITALA PROJEKT

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

High Core Remote Car X8000 Cool

SIMON SAYS Projekt i EITF11 Digitala Projekt

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

HockeyMate Projektarbete i EITF40 - Digitala Projekt Institutionen för elektro- och informationsteknik

EITF11: Bandkanon Grp 05

Tidsstyrd persiennöppnare

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

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

Projektrapport - Roterande digital LED-klocka

Projektrapport - Feststation

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

Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson

Digitala projekt, EITF11 - Rapport Handledare: Bertil Lindvall. Fredrik Nylund (ine12fny) Johan Ekman (ine11jek) Olof Wikman (ine11owi)

Rörelse- och temperaturkänsligt larmsystem

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

Rapport i Digitala Projekt (EDI021)

Rapportsammanfattning. Optima Sous Vide

Bilen som inte kan krocka

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

Department of Information Technology Digitala Projekt Frysboxregulator. 10 december 2007

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

Digitala Projekt, EITF40

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

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

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

KRYPTERING. 23 maj. Vilken jävla duart?

Pulsmätare Digitala Projekt EITF11

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

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

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Effektpedal för elgitarr

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

LOOKY LUKE. Caroline Hellström och Ville Orlander Arvola Industriell ekonomi I10. - Att välja en lyckosam väg EITF11 Digitala projekt

AVR 5. Styrning av trafikljus. Digitala system 15 p

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

Microprocessor / Microcontroller

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

Source code. #undef F_CPU. #define F_CPU UL. #include <avr/io.h> #include <avr/delay.h> #include <string.h> #include <avr/eeprom.

Projektrapport - RoboWalter

Kontrollskrivning Mikrodatorteknik CDT S2-704

Digitala projekt VT Myran

SNOOZE SNOOZE REVOLUTION

Institutionen för informationsteknologi

64 för BBC micro:bit. :GAME Varning: TM. Kortets layout:

Projektrapport Digitala System

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

Väderstation. EITF11, Digitala projekt RAPPORT. Isabella Bergvik, Emma Sandén & Hanna Åberg

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

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

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

Digitala projekt VT Väderstationen. Av: Andreas Cremon E04 grupp 15 26/2-2007

Självgående fordon Rapport i kursen digitala projekt, EDI021

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

Rapport: Väderstation

Linjeföljare. Digitala projekt

Från idé till skapelse av en äkta RoomBot

FRAMTAGNING AV DEMONSTRATORER

Guitar tuner Digitala Projekt (EITF40)

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

Voltmeter EITF11 LUNDS TEKNISKA HÖGSKOLA Grupp 3 Timmy Andersson Jesper Tempel Christoffer Lundgren

Musen. Författare: Joel Guedj e02jg Erik Dahlbäck e02ed. Handledare: Bertil Lindvall. Digitala Projekt SK 2005

Väderstation. Datum: Projektarbete vid elektro och informationstekniks institution

Datorprojekt, del 1. Digitala system 15 p

LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel

Datorteknik 2 (AVR 2)

Digitala projekt Linjeföljande bil

Fan Controller Digital projects (EITF01) Lund University, Faculty of Engineering John Hedestig, Karl Fogelström Handledare: Bertil Lindvall

Projektrapport. Gadget ett övervakningssystem för hem och företag

Laboration 2 i Datorteknik- Assemblerprogrammering II

Blinkande discogolv. Lunds Tekniska Högskola, LTH Elektro- och informationsteknik. EITF11 Digitala Projekt VT 2014

Transkript:

The Phenomenal Doorbell Bilaga 2. Källkod #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> //Variabler int flag = 0; int count = 0; int timevect[8]; int bellbutton = 0; int waitbutton = 0; int comeinbutton = 0; int void setup() DDRA = 0b00001111; DDRB = 0b11111111; DDRC = 0b00000000; DDRD = 0b11100000; disp_initial(); enablebuttoninterrupt(); enabletimeinterrupt(); sei(); void set_pin(char port, char pin, char state) char set = _BV(pin); if('a' == port) set &= PORTA; if(set!= 0 && state == 0) //Ändrar från 1 till 0 PORTA ^= set; else if(set == 0 && state == 1) //Ändrar från 0 till 1 PORTA ^= _BV(pin); else if('b' == port) set &= PORTB; if(set!= 0 && state == 0) //Ändrar från 1 till 0 PORTB ^= set; else if(set == 0 && state == 1) //Ändrar från 0 till 1 PORTB ^= _BV(pin); else if('c' == port) set &= PORTC; if(set!= 0 && state == 0) //Ändrar från 1 till 0 PORTC ^= set;

else if(set == 0 && state == 1) //Ändrar från 0 till 1 PORTC ^= _BV(pin); else if('d' == port) set &= PORTD; if(set!= 0 && state == 0) //Ändrar från 1 till 0 PORTD ^= set; else if(set == 0 && state == 1) //Ändrar från 0 till 1 PORTD ^= _BV(pin); //----------------------------- SKÄRMINSTÄLLNINGAR ------------------------------// void write_cmd(char value) //RS är en nolla för att endast behöva läsa in commands PORTB = value; set_pin('d', PD5, 0); // RS set_pin('d', PD6, 0); // RW set_pin('d', PD7, 1); // E set_pin('d', PD7, 0); // E void disp_writech(char val) // RS är en etta för att kunna läsa in tecken PORTB = val; _delay_ms(1); set_pin('d', PD6, 0); //RW set_pin('d', PD5, 1); //RS set_pin('d',pd7, 1); //Enable set_pin('d',pd7, 0); //Enable void disp_nbr(int number) int nbr1 = number/10; itoa(nbr1,timevect,10); disp_writech(timevect[0]); int nbr2 = number%10; nbr1 = itoa(nbr2, timevect,10); disp_writech(timevect[0]); void disp_clear() write_cmd(0b00000001); //Clear display void disp_initial() //Initiala displayinställningar

write_cmd(0b00111000); //Function set write_cmd(0b00001111); //ON/OFF set write_cmd(0b00000010); //Entry mode set //------------------------------ SKRIVA PA SKÄRMEN ------------------------------// void disp_waitmessage(int number) disp_writech('w'); disp_writech('a'); disp_writech('n'); disp_writech('g'); disp_writech('m'); disp_writech(':'); disp_nbr(number); //Visa tiden beroende på knapptryck void disp_welcomemessage() disp_writech('w'); //Visa "Welcome" på skärmen disp_writech('l'); disp_writech('c'); disp_writech('o'); disp_writech('m'); void disp_stepinsidemessage() disp_writech('s'); //Visa "Step inside" på skärmen disp_writech('p'); disp_writech('n'); disp_writech('s'); disp_writech('d');

void disp_ooomessage() disp_writech('o'); //Visa "Out of office" på skärmen disp_writech('u'); disp_writech('o'); disp_writech('f'); disp_writech('o'); disp_writech('f'); disp_writech('f'); disp_writech('c'); Digitala projekt (EITF11) //------------------------------------- LED -------------------------------------// void redled_on() set_pin('a', PA0, 1); void yellowled_on() set_pin('a', PA1, 1); void greenled_on() set_pin('a', PA2, 1); void redled_off() set_pin('a', PA0, 0); void yellowled_off() set_pin('a', PA1, 0); void greenled_off() set_pin('a', PA2, 0); int check_button() char val = PIND; val = val & 0b00011010; if(val == 8) //Sjuksköterskan trycker på vänta-knappen return 1; if(val == 16) //Sjuksköterskan trycker på kom in-knappen

return 2; if (val == 2) //Någon ringer på return 3; //Interrupts void enablebuttoninterrupt() MCUCR = 0b00000011; // sida 67 SREG = 0x82; //? GICR = (1 << INT0); void enabletimeinterrupt() //timer for count TCCR1A = 0b00000000; TCCR1B = 0b00000101; TCNT1 = 65145; //timer for buzzer TCCR0 = 0b00001001; TCNT0 = 0b11111111; TIMSK = 0b00000101; ISR(INT0_vect) //Globalt button-interrupt _delay_ms(1); //felsökning med Berra int a = check_button(); //KOLLA ALLA KNAPPAR if(a == 1) waitbutton = 1; else if(a == 2) comeinbutton = 1; else if (a == 3) bellbutton = 1; ISR(TIMER0_OVF_vect) //Buzzer if(bellbutton == 1 && count < 20) set_pin('a', PA3, 0); _delay_ms(1); set_pin('a', PA3, 1);

TCNT0 = 0b11111111; ISR(TIMER1_OVF_vect) //Tidräknare som körs varje tiondels sekund if(bellbutton == 1 && count < 100 && count >= 0) count++; if(waitbutton == 1 && count > 0 && count < 100) time++; waitbutton = 0; if(waitbutton == 1 && count == 0) waitbutton = 0; if(comeinbutton == 1 && count == 0) comeinbutton = 0; if(comeinbutton == 1 && count > 0 && count < 100) count = 0; bellbutton = 0; comeinbutton = 0; flag = 3; //green if(count == 100 && time > 0) count = 0; bellbutton = 0; waitbutton = 0; flag = 1; //yellow if(count == 100 && time == 0) count = 0; bellbutton = 0; flag = 2; //red TCNT1 = 65145; void actionperformed() if(flag == 3) // tända grön led greenled_on(); disp_stepinsidemessage(); _delay_ms(500);

greenled_off(); else if (flag == 1) // tända gul leds, skriva meddelande yellowled_on(); time = time*5; disp_waitmessage(time); _delay_ms(500); yellowled_off(); else if(flag == 2) //tända röd led redled_on(); disp_ooomessage(); _delay_ms(500); redled_off(); flag = 0; //Huvudprogram void main(void) setup(); while(1) actionperformed();