Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
avrkurs
avrkurs
Commits
09f5388c
Commit
09f5388c
authored
Mar 11, 2019
by
medlem
Browse files
Finished task2 LF. Still in copy
parent
9a4c5ad3
Changes
9
Hide whitespace changes
Inline
Side-by-side
Session3-LF/Task2_LF - Copy/Task2_LF/Task2_LF.cproj
View file @
09f5388c
...
...
@@ -166,6 +166,12 @@
<Compile
Include=
"main.c"
>
<SubType>
compile
</SubType>
</Compile>
<Compile
Include=
"graphics.c"
>
<SubType>
compile
</SubType>
</Compile>
<Compile
Include=
"graphics.h"
>
<SubType>
compile
</SubType>
</Compile>
<Compile
Include=
"spi.c"
>
<SubType>
compile
</SubType>
</Compile>
...
...
Session3-LF/Task2_LF - Copy/Task2_LF/adc.c
View file @
09f5388c
...
...
@@ -8,7 +8,7 @@
#include <avr/io.h>
void
adc_init
(){
ADC0
.
CTRLA
|=
(
ADC_RESSEL_10BIT_gc
);
//Set resolution, we choose
8
bits
ADC0
.
CTRLA
|=
(
ADC_RESSEL_10BIT_gc
);
//Set resolution, we choose
10
bits
ADC0
.
CTRLB
|=
(
ADC_SAMPNUM_ACC4_gc
);
//OPTIONAL: We can use multiple samples if we like, example here with 4
//More samples gives a better result but takes longer.
...
...
Session3-LF/Task2_LF - Copy/Task2_LF/adc.h
View file @
09f5388c
...
...
@@ -4,8 +4,6 @@
* Created: 27.02.2017 16:51:27
* Author: Petter
*/
#ifndef ADC_H_
#define ADC_H_
...
...
Session3-LF/Task2_LF - Copy/Task2_LF/fonts.h
View file @
09f5388c
...
...
@@ -307,152 +307,8 @@ const unsigned char PROGMEM font4[95][4] = {
{
0
b10000100
,
0
b01111000
,
0
b00010000
,
0
b00000000
},
// }
{
0
b00001000
,
0
b00000100
,
0
b00001000
,
0
b00000100
},
// ~
};
// Image - Game Over screen
const
unsigned
char
PROGMEM
game_over_img
[
1024
]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFC
,
0xFC
,
0x0E
,
0x0F
,
0x03
,
0x03
,
0xF3
,
0xF3
,
0xF3
,
0xF3
,
0xF3
,
0x73
,
0x73
,
0x63
,
0x63
,
0x6F
,
0x6E
,
0xFC
,
0xFC
,
0xFC
,
0xFC
,
0xFE
,
0x0F
,
0x0F
,
0x03
,
0x03
,
0xF3
,
0xF3
,
0xF3
,
0xF3
,
0xF3
,
0xF3
,
0x03
,
0x03
,
0x0F
,
0x0F
,
0xFE
,
0xFC
,
0xFE
,
0xFE
,
0xFF
,
0x03
,
0x03
,
0x03
,
0x03
,
0xC7
,
0x8E
,
0x1C
,
0x38
,
0x1C
,
0x8E
,
0xC7
,
0x03
,
0x03
,
0x03
,
0x03
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x03
,
0x03
,
0x03
,
0x73
,
0x73
,
0x73
,
0x73
,
0x73
,
0x73
,
0x73
,
0x73
,
0x73
,
0xF3
,
0xF3
,
0xFF
,
0xFF
,
0xFE
,
0x7C
,
0x7C
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x0F
,
0x0F
,
0x38
,
0x38
,
0x70
,
0x70
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x78
,
0x78
,
0x70
,
0x70
,
0x7F
,
0x7F
,
0x7F
,
0x7F
,
0x7F
,
0x70
,
0x70
,
0x70
,
0x70
,
0x7C
,
0x7C
,
0x3C
,
0x3C
,
0x3C
,
0x3C
,
0x70
,
0x70
,
0x70
,
0x70
,
0x7F
,
0x7F
,
0x7F
,
0x7F
,
0x7F
,
0x70
,
0x70
,
0x70
,
0x70
,
0x7F
,
0x7F
,
0x7F
,
0x3F
,
0x3F
,
0x3F
,
0x3F
,
0x70
,
0x70
,
0x70
,
0x70
,
0x7F
,
0x7F
,
0x7F
,
0x7F
,
0x7F
,
0x70
,
0x70
,
0x70
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x77
,
0x7F
,
0x7F
,
0x7F
,
0x78
,
0x78
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xF8
,
0xF8
,
0x0C
,
0x0C
,
0x06
,
0x06
,
0xF6
,
0xF6
,
0xF6
,
0xF6
,
0xF6
,
0xF6
,
0xF6
,
0x06
,
0x06
,
0x0E
,
0x0C
,
0xF8
,
0xF8
,
0xFC
,
0xFE
,
0xFE
,
0x06
,
0x06
,
0x06
,
0x06
,
0xFE
,
0xFC
,
0xF8
,
0xF8
,
0xFE
,
0xFE
,
0x06
,
0x06
,
0x06
,
0x06
,
0xFE
,
0xFE
,
0xFE
,
0xFE
,
0xFE
,
0x06
,
0x06
,
0x06
,
0x06
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0xF6
,
0xF6
,
0xFE
,
0xFE
,
0xFE
,
0xFE
,
0xFE
,
0x06
,
0x06
,
0x06
,
0x06
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0x76
,
0x06
,
0x06
,
0x8E
,
0x8E
,
0xFC
,
0xF8
,
0xF8
,
0xF0
,
0xF0
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x1F
,
0x1F
,
0x30
,
0x30
,
0x60
,
0xE0
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xE0
,
0xE0
,
0xF0
,
0xF0
,
0xFF
,
0x7F
,
0x3F
,
0x3F
,
0x3F
,
0x3F
,
0x3E
,
0x7C
,
0xFC
,
0xF0
,
0xF1
,
0xE3
,
0xE3
,
0xF1
,
0xF1
,
0xFC
,
0xFC
,
0xFE
,
0xFF
,
0x7F
,
0x1F
,
0x1F
,
0x3F
,
0x3F
,
0xE0
,
0xE0
,
0xE0
,
0xE0
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xEF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE0
,
0xE0
,
0xE0
,
0xF0
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x3F
,
0x3F
,
0xE0
,
0xE0
,
0xE0
,
0xE0
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
// Image - Splash screen
const
unsigned
char
PROGMEM
pong_img
[
1024
]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x04
,
0x0C
,
0xFE
,
0xFE
,
0xFE
,
0x06
,
0x06
,
0x06
,
0x06
,
0x06
,
0x02
,
0x02
,
0x06
,
0x06
,
0x06
,
0x06
,
0x06
,
0x04
,
0x0C
,
0x0C
,
0x0C
,
0x18
,
0x78
,
0xF8
,
0xF0
,
0xE0
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0xFF
,
0xFF
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0xC0
,
0xC0
,
0xC0
,
0x40
,
0x40
,
0x60
,
0x20
,
0x30
,
0x38
,
0x1C
,
0x1E
,
0x07
,
0x07
,
0x01
,
0x00
,
0xC0
,
0xC0
,
0xE0
,
0x60
,
0x30
,
0x10
,
0x18
,
0x18
,
0x08
,
0x08
,
0x08
,
0x08
,
0x18
,
0x10
,
0x38
,
0x70
,
0xF0
,
0xE0
,
0xC0
,
0xC0
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xF0
,
0xF8
,
0xF8
,
0xF8
,
0x40
,
0x60
,
0x30
,
0x38
,
0x38
,
0x18
,
0x18
,
0x18
,
0x18
,
0x38
,
0x38
,
0x78
,
0xF0
,
0xF0
,
0xE0
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0xC0
,
0xC0
,
0x60
,
0x30
,
0x30
,
0x10
,
0x10
,
0x10
,
0x10
,
0x30
,
0x30
,
0x70
,
0xF8
,
0xF8
,
0xF8
,
0xB8
,
0x38
,
0x38
,
0x18
,
0x1C
,
0x0C
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0xFF
,
0xFF
,
0x01
,
0x01
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xFC
,
0xFE
,
0xDF
,
0x07
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x07
,
0xFF
,
0xFF
,
0xEF
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0xFF
,
0xFF
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x30
,
0x7F
,
0xFF
,
0xFF
,
0xE0
,
0xC0
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0xC0
,
0xC0
,
0x60
,
0x3F
,
0x1F
,
0x0F
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xC0
,
0x7F
,
0x7F
,
0x3F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0x0F
,
0x1F
,
0x3F
,
0x7E
,
0x78
,
0x70
,
0xE0
,
0xE0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0x40
,
0x40
,
0x40
,
0x60
,
0x30
,
0x30
,
0x1C
,
0x1F
,
0x0F
,
0x03
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x7F
,
0x7F
,
0x7F
,
0x3F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x7F
,
0x7F
,
0x7F
,
0x3E
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xF0
,
0xF0
,
0xF9
,
0xFD
,
0xCF
,
0xC7
,
0x87
,
0x87
,
0x83
,
0x81
,
0xC1
,
0xC1
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x10
,
0x10
,
0x10
,
0x10
,
0xF0
,
0x10
,
0x10
,
0x10
,
0x10
,
0x00
,
0xF8
,
0x00
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x80
,
0xC0
,
0x40
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x03
,
0x03
,
0x0F
,
0xFF
,
0xFE
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x7F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x7F
,
0x01
,
0x00
,
0x00
,
0x01
,
0x7F
,
0x00
,
0x00
,
0x1E
,
0x3F
,
0x65
,
0x44
,
0x44
,
0x45
,
0x47
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0x6D
,
0x68
,
0x68
,
0x6F
,
0xC7
,
0x00
,
0x00
,
0x79
,
0x68
,
0x4C
,
0x44
,
0x6D
,
0x7F
,
0x00
,
0x00
,
0x7F
,
0x7F
,
0x01
,
0x00
,
0x00
,
0x7F
,
0x7F
,
0x01
,
0x00
,
0x01
,
0x7F
,
0x00
,
0x00
,
0x1E
,
0x3F
,
0x65
,
0x44
,
0x44
,
0x45
,
0x47
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x0C
,
0x1F
,
0x3F
,
0x7F
,
0x70
,
0x70
,
0xE0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0xC0
,
0x40
,
0x60
,
0x60
,
0x20
,
0x30
,
0x18
,
0x18
,
0x0C
,
0x07
,
0x03
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x03
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
#endif
/* FONTS_H_ */
\ No newline at end of file
Session3-LF/Task2_LF - Copy/Task2_LF/graphics.c
0 → 100644
View file @
09f5388c
#include "oled.h"
#include "graphics.h"
/* Draw the outline of the loading bar */
void
graphics_loading_bar_init
()
{
oled_pos
(
1
,
12
);
oled_write_d
(
0xf8
);
oled_pos
(
2
,
12
);
oled_write_d
(
0x1f
);
oled_pos
(
1
,
115
);
oled_write_d
(
0xf8
);
oled_pos
(
2
,
115
);
oled_write_d
(
0x1f
);
for
(
uint8_t
i
=
0
;
i
<
101
;
i
++
)
{
oled_pos
(
1
,
13
+
i
);
oled_write_d
(
0x08
);
oled_pos
(
2
,
13
+
i
);
oled_write_d
(
0x10
);
}
}
/* Set length of loading bar. Between 0 and 1023 */
void
graphics_loading_bar_set
(
uint16_t
data
)
{
if
(
data
>
1023
){
//Highest data value
data
=
1023
;
}
data
=
data
/
10
;
//convert data to percentages
for
(
int
i
=
0
;
i
<
data
;
i
++
){
oled_pos
(
1
,
13
+
i
);
oled_write_d
(
0xf8
);
oled_pos
(
2
,
13
+
i
);
oled_write_d
(
0x1f
);
}
for
(
int
i
=
data
;
i
<
102
;
i
++
){
oled_pos
(
1
,
13
+
i
);
oled_write_d
(
0x08
);
oled_pos
(
2
,
13
+
i
);
oled_write_d
(
0x10
);
}
}
/* Print bitmap to screen */
void
graphics_print_bitmap
(
const
uint8_t
*
bm
)
{
for
(
uint8_t
y
=
0
;
y
<
4
;
y
++
)
{
for
(
uint8_t
x
=
0
;
x
<
16
;
x
++
)
{
uint8_t
d
[
8
]
=
{
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
0
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
1
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
2
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
3
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
4
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
5
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
6
)
*
16
+
x
])),
pgm_read_byte
(
&
(
bm
[(
8
*
y
+
7
)
*
16
+
x
]))
};
for
(
uint8_t
b
=
0
;
b
<
8
;
b
++
)
{
uint8_t
db
=
0
;
db
|=
(((
d
[
0
]
>>
b
)
&
0x1
)
<<
0
);
db
|=
(((
d
[
1
]
>>
b
)
&
0x1
)
<<
1
);
db
|=
(((
d
[
2
]
>>
b
)
&
0x1
)
<<
2
);
db
|=
(((
d
[
3
]
>>
b
)
&
0x1
)
<<
3
);
db
|=
(((
d
[
4
]
>>
b
)
&
0x1
)
<<
4
);
db
|=
(((
d
[
5
]
>>
b
)
&
0x1
)
<<
5
);
db
|=
(((
d
[
6
]
>>
b
)
&
0x1
)
<<
6
);
db
|=
(((
d
[
7
]
>>
b
)
&
0x1
)
<<
7
);
oled_write_d
(
db
);
}
}
}
}
\ No newline at end of file
Session3-LF/Task2_LF - Copy/Task2_LF/graphics.h
0 → 100644
View file @
09f5388c
/*
* oled_graphic.h
*
* Created: 11.03.2019 20:30:38
* Author: medlem
*/
#ifndef OLED_GRAPHIC_H_
#define OLED_GRAPHIC_H_
#include <avr/io.h>
#include <avr/pgmspace.h>
/* Draw the outline of the loading bar */
void
graphics_loading_bar_init
();
/* Set length of loading bar. Between 0 and 1023 */
void
graphics_loading_bar_set
(
uint16_t
data
);
/* Print a bitmap to the screen. See Graphics section under to find example bitmap. */
void
graphics_print_bitmap
(
const
uint8_t
*
bm
);
//Graphics. Probably generated on the Internet.
static
const
uint8_t
PROGMEM
OV
[
512
]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x70
,
0x38
,
0xDE
,
0x3F
,
0x3E
,
0x18
,
0x00
,
0x00
,
0x00
,
0xF0
,
0xFF
,
0x1F
,
0x00
,
0x00
,
0x00
,
0x00
,
0xD8
,
0x78
,
0xDE
,
0x3B
,
0x33
,
0x1C
,
0x00
,
0x00
,
0x00
,
0xFC
,
0xFF
,
0x7F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8E
,
0x21
,
0x23
,
0x1C
,
0x00
,
0x00
,
0x00
,
0xFE
,
0x00
,
0xFE
,
0x00
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8E
,
0xA9
,
0x23
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x3F
,
0x00
,
0xF8
,
0x01
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8F
,
0x89
,
0x03
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x1F
,
0x00
,
0xF0
,
0x01
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8D
,
0x8F
,
0x03
,
0x36
,
0x00
,
0x00
,
0x80
,
0x0F
,
0x00
,
0xE0
,
0x03
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xF9
,
0x8D
,
0x8B
,
0x7B
,
0x32
,
0x00
,
0x00
,
0xC0
,
0x07
,
0x00
,
0xC0
,
0x07
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xD9
,
0x8D
,
0x89
,
0x33
,
0x3E
,
0x00
,
0x00
,
0xC0
,
0x03
,
0x00
,
0x80
,
0x07
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xD9
,
0x8D
,
0xA1
,
0x33
,
0x72
,
0x00
,
0x00
,
0xE0
,
0x03
,
0x00
,
0x80
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xD9
,
0x8D
,
0xA1
,
0x33
,
0x72
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0xD8
,
0xD9
,
0x8D
,
0x31
,
0x33
,
0x63
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0xF8
,
0xFC
,
0xDE
,
0x3F
,
0x3F
,
0xF7
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xE1
,
0x00
,
0x0E
,
0x0E
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xE1
,
0x00
,
0x0E
,
0x0E
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xC1
,
0x01
,
0x07
,
0x0F
,
0x00
,
0xC0
,
0xF3
,
0x7F
,
0x3F
,
0xBC
,
0xE3
,
0xFB
,
0xF7
,
0xEF
,
0x07
,
0xE0
,
0xC1
,
0x01
,
0x07
,
0x0F
,
0x00
,
0x80
,
0x33
,
0x67
,
0x6E
,
0x38
,
0x33
,
0xDB
,
0xE7
,
0xEC
,
0x0F
,
0xE0
,
0x81
,
0x83
,
0x03
,
0x0F
,
0x00
,
0x80
,
0x33
,
0x47
,
0xC6
,
0x18
,
0x19
,
0xCA
,
0x64
,
0xC8
,
0x0C
,
0xE0
,
0x83
,
0x83
,
0x83
,
0x0F
,
0x00
,
0x80
,
0x13
,
0x57
,
0xC6
,
0x98
,
0x38
,
0xCA
,
0x64
,
0xCA
,
0x1C
,
0xC0
,
0x03
,
0xC7
,
0x81
,
0x07
,
0x00
,
0x00
,
0x13
,
0x17
,
0xC6
,
0xD8
,
0x70
,
0xC0
,
0x60
,
0xC2
,
0x1C
,
0xC0
,
0x07
,
0xC7
,
0xC1
,
0x07
,
0x00
,
0x00
,
0x13
,
0x1F
,
0x7E
,
0xF8
,
0xE0
,
0xC1
,
0xE0
,
0xC3
,
0x1C
,
0x80
,
0x0F
,
0xEE
,
0xE0
,
0x03
,
0x00
,
0x00
,
0x13
,
0x17
,
0x7E
,
0xF8
,
0xC0
,
0xC3
,
0xE0
,
0xC2
,
0x1C
,
0x02
,
0x1F
,
0xFE
,
0xF0
,
0x83
,
0x00
,
0x00
,
0x1F
,
0x17
,
0x66
,
0xD8
,
0x81
,
0xC3
,
0x60
,
0xC2
,
0x1C
,
0x1E
,
0x3F
,
0x7C
,
0xF8
,
0xF1
,
0x00
,
0x00
,
0x0F
,
0x47
,
0x66
,
0x98
,
0x19
,
0xC3
,
0x60
,
0xC8
,
0x1C
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x0E
,
0x47
,
0x66
,
0x98
,
0x1B
,
0xC2
,
0x60
,
0xC8
,
0x0C
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x0E
,
0x47
,
0x6E
,
0x99
,
0x1B
,
0xC3
,
0x61
,
0xCC
,
0x0C
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x8E
,
0x7F
,
0xFF
,
0xBD
,
0xFF
,
0xE3
,
0xF3
,
0xEF
,
0x07
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
#endif
/* OLED_GRAPHIC_H_ */
\ No newline at end of file
Session3-LF/Task2_LF - Copy/Task2_LF/main.c
View file @
09f5388c
...
...
@@ -13,196 +13,61 @@
#include <avr/interrupt.h>
#include "oled.h"
#include "oled.h"
//TODO abstraher oled
#include "adc.h"
#include "graphics.h"
#include "spi.h"
const
uint8_t
OV
[
512
]
PROGMEM
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x70
,
0x38
,
0xDE
,
0x3F
,
0x3E
,
0x18
,
0x00
,
0x00
,
0x00
,
0xF0
,
0xFF
,
0x1F
,
0x00
,
0x00
,
0x00
,
0x00
,
0xD8
,
0x78
,
0xDE
,
0x3B
,
0x33
,
0x1C
,
0x00
,
0x00
,
0x00
,
0xFC
,
0xFF
,
0x7F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8E
,
0x21
,
0x23
,
0x1C
,
0x00
,
0x00
,
0x00
,
0xFE
,
0x00
,
0xFE
,
0x00
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8E
,
0xA9
,
0x23
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x3F
,
0x00
,
0xF8
,
0x01
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8F
,
0x89
,
0x03
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x1F
,
0x00
,
0xF0
,
0x01
,
0x00
,
0x00
,
0x00
,
0x8C
,
0x79
,
0x8D
,
0x8F
,
0x03
,
0x36
,
0x00
,
0x00
,
0x80
,
0x0F
,
0x00
,
0xE0
,
0x03
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xF9
,
0x8D
,
0x8B
,
0x7B
,
0x32
,
0x00
,
0x00
,
0xC0
,
0x07
,
0x00
,
0xC0
,
0x07
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xD9
,
0x8D
,
0x89
,
0x33
,
0x3E
,
0x00
,
0x00
,
0xC0
,
0x03
,
0x00
,
0x80
,
0x07
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xD9
,
0x8D
,
0xA1
,
0x33
,
0x72
,
0x00
,
0x00
,
0xE0
,
0x03
,
0x00
,
0x80
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xD9
,
0x8D
,
0xA1
,
0x33
,
0x72
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0xD8
,
0xD9
,
0x8D
,
0x31
,
0x33
,
0x63
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0xF8
,
0xFC
,
0xDE
,
0x3F
,
0x3F
,
0xF7
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xFF
,
0xC7
,
0xFF
,
0x0F
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xE1
,
0x00
,
0x0E
,
0x0E
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xE1
,
0x00
,
0x0E
,
0x0E
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xE0
,
0xC1
,
0x01
,
0x07
,
0x0F
,
0x00
,
0xC0
,
0xF3
,
0x7F
,
0x3F
,
0xBC
,
0xE3
,
0xFB
,
0xF7
,
0xEF
,
0x07
,
0xE0
,
0xC1
,
0x01
,
0x07
,
0x0F
,
0x00
,
0x80
,
0x33
,
0x67
,
0x6E
,
0x38
,
0x33
,
0xDB
,
0xE7
,
0xEC
,
0x0F
,
0xE0
,
0x81
,
0x83
,
0x03
,
0x0F
,
0x00
,
0x80
,
0x33
,
0x47
,
0xC6
,
0x18
,
0x19
,
0xCA
,
0x64
,
0xC8
,
0x0C
,
0xE0
,
0x83
,
0x83
,
0x83
,
0x0F
,
0x00
,
0x80
,
0x13
,
0x57
,
0xC6
,
0x98
,
0x38
,
0xCA
,
0x64
,
0xCA
,
0x1C
,
0xC0
,
0x03
,
0xC7
,
0x81
,
0x07
,
0x00
,
0x00
,
0x13
,
0x17
,
0xC6
,
0xD8
,
0x70
,
0xC0
,
0x60
,
0xC2
,
0x1C
,
0xC0
,
0x07
,
0xC7
,
0xC1
,
0x07
,
0x00
,
0x00
,
0x13
,
0x1F
,
0x7E
,
0xF8
,
0xE0
,
0xC1
,
0xE0
,
0xC3
,
0x1C
,
0x80
,
0x0F
,
0xEE
,
0xE0
,
0x03
,
0x00
,
0x00
,
0x13
,
0x17
,
0x7E
,
0xF8
,
0xC0
,
0xC3
,
0xE0
,
0xC2
,
0x1C
,
0x02
,
0x1F
,
0xFE
,
0xF0
,
0x83
,
0x00
,
0x00
,
0x1F
,
0x17
,
0x66
,
0xD8
,
0x81
,
0xC3
,
0x60
,
0xC2
,
0x1C
,
0x1E
,
0x3F
,
0x7C
,
0xF8
,
0xF1
,
0x00
,
0x00
,
0x0F
,
0x47
,
0x66
,
0x98
,
0x19
,
0xC3
,
0x60
,
0xC8
,
0x1C
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x0E
,
0x47
,
0x66
,
0x98
,
0x1B
,
0xC2
,
0x60
,
0xC8
,
0x0C
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x0E
,
0x47
,
0x6E
,
0x99
,
0x1B
,
0xC3
,
0x61
,
0xCC
,
0x0C
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x8E
,
0x7F
,
0xFF
,
0xBD
,
0xFF
,
0xE3
,
0xF3
,
0xEF
,
0x07
,
0xFE
,
0x7F
,
0xFE
,
0xFD
,
0xFF
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
#define KLAKK 0x00
#define LED0_bm 0x20
#define LED0_PORT PORTF
#define FONTSIZE 5
#define ADC_PRINT_START 82
#define SW0_bm 0x40
#define SW0_PORT PORTF
int
main
(
void
)
{
sei
()
;
_delay_ms
(
500
);
uint16_t
data
;
SW0_PORT
.
DIRCLR
=
SW0_bm
;
SPI_MasterInit
(
);
oled_init
();
adc_init
();
oled_write_bitmap
(
OV
);
//Printing Bitmap
graphics_print_bitmap
(
OV
);
//Printing Bitmap for startup swag.
_delay_ms
(
2000
);
oled_clear_screen
();
LED0_PORT
.
DIRSET
=
LED0_bm
;
SW0_PORT
.
DIRCLR
=
SW0_bm
;
oled_pos
(
1
,
12
);
oled_write_d
(
0xf8
);
oled_pos
(
2
,
12
);
oled_write_d
(
0x1f
);
oled_pos
(
1
,
115
);
oled_write_d
(
0xf8
);
oled_pos
(
2
,
115
);
oled_write_d
(
0x1f
);
for
(
uint8_t
i
=
0
;
i
<
101
;
i
++
)
{
oled_pos
(
1
,
13
+
i
);
oled_write_d
(
0x08
);
oled_pos
(
2
,
13
+
i
);
oled_write_d
(
0x10
);
}
oled_pos
(
0
,
12
);
fprintf
(
FONT5
,
"OV-POT read: "
);
uint8_t
software_timer_print_adc
=
0
;
uint8_t
blinkled
=
0
;
uint16_t
data
;
uint16_t
percent_data
;
graphics_loading_bar_init
();
while
(
1
)
{
software_timer_print_adc
++
;
blinkled
++
;
uint8_t
adc_curser_position
=
82
;
data
=
adc_read
(
KLAKK
)
/
4
;
data
=
adc_read
(
KLAKK
)
/
4
;
//update data each loop using polling. TCA timer interrupt would have been smoother.
oled_pos
(
0
,
12
);
fprintf
(
FONT5
,
"OV-POT read: "
);
fprintf
(
FONT5
,
"%4u"
,
data
);
//Fancy formatting for better user experience
//Update loading bar
graphics_loading_bar_set
(
data
);
if
(
software_timer_print_adc
==
2
)
{
oled_pos
(
0
,
ADC_PRINT_START
);
//for (uint8_t i=0;i<27;i++)
//{
// oled_write_d(0x00);
//}
// if (data>=1000)
// {
oled_pos
(
0
,
adc_curser_position
);
// }
if
(
data
<
1000
)
{
for
(
uint8_t
i
=
0
;
i
<
FONTSIZE
;
i
++
)
{
oled_write_d
(
0x00
);
}
adc_curser_position
+=
FONTSIZE
+
1
;
oled_pos
(
0
,
adc_curser_position
);
}
if
(
data
<
100
)
{
for
(
uint8_t
i
=
0
;
i
<
FONTSIZE
;
i
++
)
{
oled_write_d
(
0x00
);
}
adc_curser_position
+=
FONTSIZE
+
1
;
oled_pos
(
0
,
adc_curser_position
);
}
if
(
data
<
10
)
{
for
(
uint8_t
i
=
0
;
i
<
FONTSIZE
;
i
++
)
{
oled_write_d
(
0x00
);
}
adc_curser_position
+=
FONTSIZE
+
1
;
oled_pos
(
0
,
adc_curser_position
);
}
fprintf
(
FONT5
,
" %u"
,
data
);
software_timer_print_adc
=
0
;
}
percent_data
=
data
/
10
;
for
(
int
i
=
0
;
i
<
percent_data
;
i
++
){
oled_pos
(
1
,
13
+
i
);
oled_write_d
(
0xf8
);
oled_pos
(
2
,
13
+
i
);
oled_write_d
(
0x1f
);
}
for
(
int
i
=
percent_data
;
i
<
102
;
i
++
){
oled_pos
(
1
,
13
+
i
);
oled_write_d
(
0x08
);
oled_pos
(
2
,
13
+
i
);
oled_write_d
(
0x10
);
}
if
(
blinkled
==
15
)
{
PORTF
.
OUTTGL
=
LED0_bm
;
blinkled
=
0
;
}
//Voltage printout
oled_pos
(
3
,
12
);