Skocz do zawartości

Winamp - zmiana sygnału programu do wizualizacji arduino


ArduPiotr

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.