mirror of
https://codeberg.org/eel4746_piano/avr_piano.git
synced 2024-11-25 10:40:29 -05:00
add notes circular buffer to piano lcd
This commit is contained in:
parent
f61f9355da
commit
20e98aeb95
50
lcd.c
50
lcd.c
@ -46,9 +46,6 @@ getNote(void)
|
|||||||
// convert to capital hex
|
// convert to capital hex
|
||||||
else if (c >= 0xa && c <= 0xf)
|
else if (c >= 0xa && c <= 0xf)
|
||||||
c = c - 0xa + 'A';
|
c = c - 0xa + 'A';
|
||||||
// shift to rest of alphabet
|
|
||||||
else if (c >= 0x10)
|
|
||||||
c = c - 0x10 + 'G';
|
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
@ -209,7 +206,6 @@ void displayNotes() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void displaySerialData() {
|
void displaySerialData() {
|
||||||
char circularBuffer[16];
|
char circularBuffer[16];
|
||||||
static int bufferIndex = 0;
|
static int bufferIndex = 0;
|
||||||
@ -251,10 +247,52 @@ void displaySerialData() {
|
|||||||
lcd_clear();
|
lcd_clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void displayPiano() {
|
||||||
|
char circularBuffer[16];
|
||||||
|
static int bufferIndex = 0;
|
||||||
|
lcd_clear();
|
||||||
|
lcd_gotoxy(6, 2);
|
||||||
|
lcd_print("PIANO");
|
||||||
|
_delay_ms(1000);
|
||||||
|
lcd_clear();
|
||||||
|
_delay_ms(1000);
|
||||||
|
while (buttonState == 0) {
|
||||||
|
char randomValue = getNote();
|
||||||
|
|
||||||
|
if (bufferIndex == 16) {
|
||||||
|
// Remove the first value and shift other values down
|
||||||
|
for (int i = 0; i < 16 - 1; i++) {
|
||||||
|
circularBuffer[i] = circularBuffer[i + 1];
|
||||||
|
}
|
||||||
|
// Add the new value at the end
|
||||||
|
circularBuffer[16 - 1] = randomValue;
|
||||||
|
} else {
|
||||||
|
// Add the new value to the buffer
|
||||||
|
circularBuffer[bufferIndex] = randomValue;
|
||||||
|
bufferIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
lcd_clear();
|
||||||
|
lcd_gotoxy(1,1);
|
||||||
|
for (int i = 0; i <= bufferIndex-1; i++) {
|
||||||
|
char singleChar[2] = {circularBuffer[bufferIndex- 1 - i], '\0'};
|
||||||
|
lcd_gotoxy(i+1,1);
|
||||||
|
lcd_print(singleChar); // Print the single character
|
||||||
|
lcd_gotoxy(6, 2);
|
||||||
|
lcd_print("PIANO");
|
||||||
|
}
|
||||||
|
|
||||||
|
_delay_ms(1000);
|
||||||
|
}
|
||||||
|
bufferIndex = 0;
|
||||||
|
lcd_clear();
|
||||||
|
}
|
||||||
|
|
||||||
//*******************************************************
|
//*******************************************************
|
||||||
int main(void) {
|
int main(void) {
|
||||||
lcd_init();
|
lcd_init();
|
||||||
lcd_hideCursor();
|
lcd_hideCursor();
|
||||||
|
usart_init();
|
||||||
setup();
|
setup();
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
while (1) {
|
while (1) {
|
||||||
@ -266,9 +304,7 @@ int main(void) {
|
|||||||
displayNotes();
|
displayNotes();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lcd_gotoxy(6,2);
|
displayPiano();
|
||||||
lcd_print("PIANO");
|
|
||||||
_delay_ms(1000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user