Witam
Z góry dziękuję z wszelką pomoc!
Na podstawie pewnego projektu z internetu (Ten projekt, tyle że bardzo skrócony. Oryginał też na tej stronie tylko że po Turecku). Program działa na zasadzie zainstalowanej biblioteki do Winamp która wysyła rożne sygnały poprzez port szeregowy. Następnie program w Arduino odczytuje je i w odpowiedni sposób interpretuje. Wizualizacja odbywa się na ekranie LCD 16x2. Ja do własnych celów, do innego projektu chciałbym aby zamiast wyświetlania się danych na ekranie informacje z każdego "słupka" były zapisywane i aktualizowane w "int-ach". Czyli np. pierwszy słupek od lewej int1, następny int2 i tak dalej. Jeśli ktoś pomógłby mi w tym byłbym bardzo wdzięczny. Dodam jeszcze że oryginalny projekt działa u mnie (wszystko zainstalowane poprawnie, chodzi mi tylko o przerobienie programu).
Link do stron: https://hase85.wordpress.com/2013/09/25/16x2-lcd-spectrum-analyzer-plugin-for-winamp/
Kod arduino:
/*
CrownSoft LCD Spectrum Analyzer Interface (c) 2013 CrownSoft Inc.
a level-1
b level-2
c level-3
d level-4
e level-5
f level-6
g level-7
h level-8
i set cursor & draw char
j set cursor & draw level
k clear screen
examples:
i00H
first col first row set 'H'
j01b
first col second row set level-2
k
clear all
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte custChars[8][8] = {
{B00000, B00000, B00000, B00000, B00000, B00000, B00000, B11111},
{B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111},
{B00000, B00000, B00000, B00000, B00000, B11111, B11111, B11111},
{B00000, B00000, B00000, B00000, B11111, B11111, B11111, B11111},
{B00000, B00000, B00000, B11111, B11111, B11111, B11111, B11111},
{B00000, B00000, B11111, B11111, B11111, B11111, B11111, B11111},
{B00000, B11111, B11111, B11111, B11111, B11111, B11111, B11111},
{B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111}
};
byte serial_getch() {
while (Serial.available() == 0);
return Serial.read();
}
void setup()
{
Serial.begin(19200);
lcd.begin(16, 2);
lcd.clear();
// create custom characters
for(int i=0;i<8;i++)
{
lcd.createChar(i, custChars[i]);
}
/*
for(int i=0;i<8;i++)
{
lcd.setCursor(i,0);
lcd.write(i);
}*/
}
void loop()
{
byte rxbyte = serial_getch();
if(rxbyte=='j') // set cursor & draw level
{
lcd.setCursor(serial_getch()-'0',serial_getch()-'0');
lcd.write((uint8_t)(serial_getch()-'a'));
}else if(rxbyte=='i') // set cursor & draw char
{
lcd.setCursor(serial_getch()-'0',serial_getch()-'0');
lcd.write((char)serial_getch());
}else if(rxbyte=='k') // clear
{
lcd.clear();
}
}
Pozdrawiam
Piotrek