Skocz do zawartości
ArduPiotr

Winamp - zmiana sygnału programu do wizualizacji arduino

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

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...