Added mario
This commit is contained in:
+500
-2
@@ -5,9 +5,11 @@
|
||||
* Author : kenny
|
||||
*/
|
||||
#define F_CPU 8000000UL //CPU op 8MHz
|
||||
#define NELEMS(x) (sizeof(x) / sizeof(x[0])) //Geeft het aantal elementen uit een array terug.
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "lcd.h"
|
||||
@@ -30,18 +32,27 @@ PATTERN_STRUCT pattern[] = {
|
||||
{"Kenneth"}, {"Janco"}, {"Arthur"}, {"Martijn"}, {"Mauro"}, {"Rene"}, {"Remco"}, {"Jannick"}, {"Tim"}
|
||||
};
|
||||
|
||||
int opgave = 0;
|
||||
int flip = 0;
|
||||
int count = 0;
|
||||
int current = 0;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
//opgave1();
|
||||
|
||||
opgave2knop();
|
||||
//opgave2knop();
|
||||
|
||||
//opgave3();
|
||||
|
||||
opgaveextra();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void opgave1()
|
||||
{
|
||||
init();
|
||||
lcd_init();
|
||||
|
||||
srand(14152);
|
||||
|
||||
@@ -71,7 +82,494 @@ void opgave1()
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
unsigned int frequency;
|
||||
unsigned int delay;
|
||||
} NOTES;
|
||||
|
||||
NOTES song[] = {
|
||||
{10, 250},{20, 250},{30, 250},{40, 250},{50, 250},{60, 250},{70, 250},{80, 250},{90, 250},{100, 250},
|
||||
{110, 250},{120, 250},{130, 250},{140, 250},{150, 250},{160, 250},{170, 250},{180, 250},{190, 250},{200, 250},
|
||||
{210, 250},{220, 250},{230, 250},{240, 250}
|
||||
};
|
||||
|
||||
NOTES mario[] = {
|
||||
{660, 100},
|
||||
{0, 150},
|
||||
{660, 100},
|
||||
{0, 300},
|
||||
{660, 100},
|
||||
{0, 300},
|
||||
{510, 100},
|
||||
{0, 100},
|
||||
{660, 100},
|
||||
{0, 300},
|
||||
{770, 100},
|
||||
{0, 550},
|
||||
{380, 100},
|
||||
{0, 575},
|
||||
|
||||
{510, 100},
|
||||
{0, 450},
|
||||
{380, 100},
|
||||
{0, 400},
|
||||
{320, 100},
|
||||
{0, 500},
|
||||
{440, 100},
|
||||
{0, 300},
|
||||
{480, 80},
|
||||
{0, 330},
|
||||
{450, 100},
|
||||
{0, 150},
|
||||
{430, 100},
|
||||
{0, 300},
|
||||
{380, 100},
|
||||
{0, 200},
|
||||
{660, 80},
|
||||
{0, 200},
|
||||
{760, 50},
|
||||
{0, 150},
|
||||
{860, 100},
|
||||
{0, 300},
|
||||
{700, 80},
|
||||
{0, 150},
|
||||
{760, 50},
|
||||
{0, 350},
|
||||
{660, 80},
|
||||
{0, 300},
|
||||
{520, 80},
|
||||
{0, 150},
|
||||
{580, 80},
|
||||
{0, 150},
|
||||
{480, 80},
|
||||
{0, 500},
|
||||
|
||||
{510, 100},
|
||||
{0, 450},
|
||||
{380, 100},
|
||||
{0, 400},
|
||||
{320, 100},
|
||||
{0, 500},
|
||||
{440, 100},
|
||||
{0, 300},
|
||||
{480, 80},
|
||||
{0, 330},
|
||||
{450, 100},
|
||||
{0, 150},
|
||||
{430, 100},
|
||||
{0, 300},
|
||||
{380, 100},
|
||||
{0, 200},
|
||||
{660, 80},
|
||||
{0, 200},
|
||||
{760, 50},
|
||||
{0, 150},
|
||||
{860, 100},
|
||||
{0, 300},
|
||||
{700, 80},
|
||||
{0, 150},
|
||||
{760, 50},
|
||||
{0, 350},
|
||||
{660, 80},
|
||||
{0, 300},
|
||||
{520, 80},
|
||||
{0, 150},
|
||||
{580, 80},
|
||||
{0, 150},
|
||||
{480, 80},
|
||||
{0, 500},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{760, 100},
|
||||
{0, 100},
|
||||
{720, 100},
|
||||
{0, 150},
|
||||
{680, 100},
|
||||
{0, 150},
|
||||
{620, 150},
|
||||
{0, 300},
|
||||
|
||||
{650, 150},
|
||||
{0, 300},
|
||||
{380, 100},
|
||||
{0, 150},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
{500, 100},
|
||||
{0, 100},
|
||||
{570, 100},
|
||||
{0, 220},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{760, 100},
|
||||
{0, 100},
|
||||
{720, 100},
|
||||
{0, 150},
|
||||
{680, 100},
|
||||
{0, 150},
|
||||
{620, 150},
|
||||
{0, 300},
|
||||
|
||||
{650, 200},
|
||||
{0, 300},
|
||||
|
||||
{1020, 80},
|
||||
{0, 300},
|
||||
{1020, 80},
|
||||
{0, 150},
|
||||
{1020, 80},
|
||||
{0, 300},
|
||||
|
||||
{380, 100},
|
||||
{0, 300},
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{760, 100},
|
||||
{0, 100},
|
||||
{720, 100},
|
||||
{0, 150},
|
||||
{680, 100},
|
||||
{0, 150},
|
||||
{620, 150},
|
||||
{0, 300},
|
||||
|
||||
{650, 150},
|
||||
{0, 300},
|
||||
{380, 100},
|
||||
{0, 150},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
{500, 100},
|
||||
{0, 100},
|
||||
{570, 100},
|
||||
{0, 420},
|
||||
|
||||
{585, 100},
|
||||
{0, 450},
|
||||
|
||||
{550, 100},
|
||||
{0, 420},
|
||||
|
||||
{500, 100},
|
||||
{0, 360},
|
||||
|
||||
{380, 100},
|
||||
{0, 300},
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
{500, 100},
|
||||
{0, 150},
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{760, 100},
|
||||
{0, 100},
|
||||
{720, 100},
|
||||
{0, 150},
|
||||
{680, 100},
|
||||
{0, 150},
|
||||
{620, 150},
|
||||
{0, 300},
|
||||
|
||||
{650, 150},
|
||||
{0, 300},
|
||||
{380, 100},
|
||||
{0, 150},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
{500, 100},
|
||||
{0, 100},
|
||||
{570, 100},
|
||||
{0, 220},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{760, 100},
|
||||
{0, 100},
|
||||
{720, 100},
|
||||
{0, 150},
|
||||
{680, 100},
|
||||
{0, 150},
|
||||
{620, 150},
|
||||
{0, 300},
|
||||
|
||||
{650, 200},
|
||||
{0, 300},
|
||||
|
||||
{1020, 80},
|
||||
{0, 300},
|
||||
{1020, 80},
|
||||
{0, 150},
|
||||
{1020, 80},
|
||||
{0, 300},
|
||||
|
||||
{380, 100},
|
||||
{0, 300},
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{760, 100},
|
||||
{0, 100},
|
||||
{720, 100},
|
||||
{0, 150},
|
||||
{680, 100},
|
||||
{0, 150},
|
||||
{620, 150},
|
||||
{0, 300},
|
||||
|
||||
{650, 150},
|
||||
{0, 300},
|
||||
{380, 100},
|
||||
{0, 150},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
{430, 100},
|
||||
{0, 150},
|
||||
{500, 100},
|
||||
{0, 100},
|
||||
{570, 100},
|
||||
{0, 420},
|
||||
|
||||
{585, 100},
|
||||
{0, 450},
|
||||
|
||||
{550, 100},
|
||||
{0, 420},
|
||||
|
||||
{500, 100},
|
||||
{0, 360},
|
||||
|
||||
{380, 100},
|
||||
{0, 300},
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
{500, 100},
|
||||
{0, 150},
|
||||
{500, 100},
|
||||
{0, 300},
|
||||
|
||||
{500, 60},
|
||||
{0, 150},
|
||||
{500, 80},
|
||||
{0, 300},
|
||||
{500, 60},
|
||||
{0, 350},
|
||||
{500, 80},
|
||||
{0, 150},
|
||||
{580, 80},
|
||||
{0, 350},
|
||||
{660, 80},
|
||||
{0, 150},
|
||||
{500, 80},
|
||||
{0, 300},
|
||||
{430, 80},
|
||||
{0, 150},
|
||||
{380, 80},
|
||||
{0, 600},
|
||||
|
||||
{500, 60},
|
||||
{0, 150},
|
||||
{500, 80},
|
||||
{0, 300},
|
||||
{500, 60},
|
||||
{0, 350},
|
||||
{500, 80},
|
||||
{0, 150},
|
||||
{580, 80},
|
||||
{0, 150},
|
||||
{660, 80},
|
||||
{0, 550},
|
||||
|
||||
{870, 80},
|
||||
{0, 325},
|
||||
{760, 80},
|
||||
{0, 600},
|
||||
|
||||
{500, 60},
|
||||
{0, 150},
|
||||
{500, 80},
|
||||
{0, 300},
|
||||
{500, 60},
|
||||
{0, 350},
|
||||
{500, 80},
|
||||
{0, 150},
|
||||
{580, 80},
|
||||
{0, 350},
|
||||
{660, 80},
|
||||
{0, 150},
|
||||
{500, 80},
|
||||
{0, 300},
|
||||
{430, 80},
|
||||
{0, 150},
|
||||
{380, 80},
|
||||
{0, 600},
|
||||
|
||||
{660, 100},
|
||||
{0, 150},
|
||||
{660, 100},
|
||||
{0, 300},
|
||||
{660, 100},
|
||||
{0, 300},
|
||||
{510, 100},
|
||||
{0, 100},
|
||||
{660, 100},
|
||||
{0, 300},
|
||||
{770, 100},
|
||||
{0, 550},
|
||||
{380, 100},
|
||||
{0, 575}
|
||||
};
|
||||
|
||||
ISR(TIMER2_OVF_vect)
|
||||
{
|
||||
if(opgave == 2)
|
||||
{
|
||||
TCNT2 = 0;
|
||||
PORTD = 0x0F;
|
||||
|
||||
clear_display();
|
||||
|
||||
_delay_ms(100);
|
||||
|
||||
display_text(1, "Overflow");
|
||||
|
||||
_delay_ms(500);
|
||||
|
||||
PORTD = 0x00;
|
||||
}
|
||||
else if(opgave == 3)
|
||||
{
|
||||
PORTD ^= 0x01;
|
||||
|
||||
if(flip)
|
||||
{
|
||||
TCNT2 = 255 - 117;
|
||||
flip = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TCNT2 = 255 - 195;
|
||||
flip = 1;
|
||||
}
|
||||
}
|
||||
else if(opgave == 4)
|
||||
{
|
||||
if(mario[current].frequency != 0)
|
||||
PORTD ^= 0x01;
|
||||
|
||||
TCNT2 = (mario[current].frequency / 7);
|
||||
}
|
||||
}
|
||||
|
||||
void opgave2knop()
|
||||
{
|
||||
opgave = 2;
|
||||
|
||||
lcd_init();
|
||||
|
||||
DDRD = 0x0F;
|
||||
|
||||
TCNT2 = 245;
|
||||
TCCR2 |= 0x06;
|
||||
TIMSK |= (1<<6);
|
||||
sei();
|
||||
|
||||
char str[15];
|
||||
|
||||
while(1)
|
||||
{
|
||||
sprintf(str, "%d", TCNT2);
|
||||
|
||||
display_text(0, str);
|
||||
display_text(1, "---------");
|
||||
|
||||
_delay_ms(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void opgave3()
|
||||
{
|
||||
opgave = 3;
|
||||
flip = 0;
|
||||
|
||||
DDRD = 0xFF;
|
||||
|
||||
TCNT2 = 255 - 117;
|
||||
TCCR2 |= 0x05;
|
||||
TIMSK |= (1<<6);
|
||||
sei();
|
||||
|
||||
while(1)
|
||||
{
|
||||
_delay_ms(10);
|
||||
}
|
||||
}
|
||||
|
||||
void opgaveextra()
|
||||
{
|
||||
opgave = 4;
|
||||
count = 0;
|
||||
current = 0;
|
||||
|
||||
DDRD = 0xFF;
|
||||
DDRB = 0xFF;
|
||||
|
||||
PORTB = 0x01110000;
|
||||
|
||||
_delay_ms(500);
|
||||
|
||||
PORTB = 0;
|
||||
|
||||
TCNT2 = 0;
|
||||
TCCR2 |= 0x03;
|
||||
TIMSK |= (1<<6);
|
||||
sei();
|
||||
|
||||
while(1)
|
||||
{
|
||||
PORTB = 0x10000000;
|
||||
|
||||
if(count > ((mario[current].delay / 10)*8))
|
||||
{
|
||||
current++;
|
||||
|
||||
count = 0;
|
||||
|
||||
if(current >= NELEMS(song))
|
||||
current = 0;
|
||||
}
|
||||
|
||||
_delay_ms(1);
|
||||
|
||||
PORTB = 0x00000000;
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user