Odpowiedz 
 
Ocena wątku:
  • 6 Głosów - 4 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
SQ9MDD Offline
Rysiek
****

Liczba postów: 378
Dołączył: 01-02-2009
Post: #1
Copyleft Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
"Heniek" chyba gdzieś w akcji zaginął nam.
Jeśli ktoś ma chęć coś z taką syntezką podłubać to wrzucam absolutną podstawę kodu by to odpalić i dalej rozwijać. Kod jest mocno skomentowany nie powinno być problemu z dalszym rozwojem:

Kod:
//*************************************************//
// Warsztaty arduino SP5YAM 2014                   //
// © SQ9MDD Ryszard Labus                          //
// rysieklabus@gmail.com                           //
// udostępniam na licencji GPL
//*************************************************//

//podłączamy bibliotekę syntezera
#include <AH_AD9850.h>

//podłączamy bibliotekę enkodera
#include <RotaryEncoder.h>;

//podłączamy bibliotekę do obsługi wyświetlacza
#include <PCD8544.h>

//inicjalizujemy komunikację z syntezerem
//syntezer   - arduino
//CLK        - PIN 8
//FQUP       - PIN 9
//BitData    - PIN 10
//RESET      - PIN 11
AH_AD9850 AD9850(8, 9, 10, 11);

// inicjalizujemy wyświetlacz
// lcd    - arduino
// sclk   - PIN 7
// sdin   - PIN 6
// dc     - PIN 5
// reset  - PIN 3
// sce    - PIN 4
PCD8544 lcd = PCD8544(7,6,5,3,4);

//inicjalizujemy enkoder
//AO - w lewo
//A1 - w prawo
//nalezy pamiętać o kondensatorach (100nF) pomiędzy liniami encodera a masą
RotaryEncoder encoder(A0,A1,5,6,1000);

//zmienna dla częstotliwości, wstawiamy tam częstotliwość od której startujemy
long czestotliwosc = 3710000;
//zmienna pomocnicza do liczenia impulsów z enkodera
int enc_sum = 0;

void setup(){
  //odpalamy syntezer i ustawiamy częstotliwość startową
  AD9850.set_frequency(0,0,czestotliwosc);    //set power=UP, phase=0, 1MHz frequency
  delay(1000);
  //odpalamy lcd
  lcd.begin(84, 48);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(czestotliwosc);
  lcd.setCursor(0,3);
  lcd.print("Warsztaty");
  lcd.setCursor(0,4);
  lcd.print("ARDUINO");
  lcd.setCursor(48,5);
  lcd.print("SP5YAM");
}

void loop(){
  //ustawiamy kursor w odpowiednim miejscu na wyświetlaczu lcd
  lcd.setCursor(0,0);
  
  //czytamy wartość z encodera
  int enc = encoder.readEncoder();
   if(enc != 0) {                           //jeśli wartość jest inna niż zero sumujemy
     enc_sum = enc_sum + enc;               //jeden ząbek encodera to +2 lub -2 tutaj to zliczam
   }
   //jesli zaliczyliśmy ząbek dodajemy lub odejmujemy do częstotliwości wartość kroku (na razie na sztywno 100Hz)
     if(enc_sum >= 2){
       czestotliwosc = czestotliwosc + 100;  //docelowo czestotliwosc = czestotliwosc + krok
       lcd.print(czestotliwosc);             //drukuję częstotliwość na wyświetlaczu
       AD9850.set_frequency(czestotliwosc);  //ustawiam syntezę na odpowiedniej częstotliwości
       enc_sum = 0;                          //reset zmiennej zliczającej impulsy enkodera
     }
     if(enc_sum <= -2){
       czestotliwosc = czestotliwosc - 100;  //docelowo czestotliwosc = czestotliwosc - krok
       lcd.print(czestotliwosc);             //drukuję częstotliwość na wyświetlaczu
       AD9850.set_frequency(czestotliwosc);  //ustawiam syntezę na odpowiedniej częstotliwości
       enc_sum = 0;                          //reset zmiennej zliczającej impulsy enkodera
     }  
   delayMicroseconds(5);                     //małe opóźnienie dla prawidłowego działania enkodera
}

Przepraszam że się tak wpycham z tym ale może koledzy mają ochotę podłubać. Jeśli ktoś ma arduino to może już testować, a kto wie może obok Heńka jakiś Złomek powstanie...

UWAGA:

Ostatnia aktualna wersja Złomka jest zawsze dostępna pod adresem:

https://code.google.com/p/zlomek/

...przede wszystkim nie zakłócać...
11-10-2014 11:34
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6AUO Offline
Andrzej
****

Liczba postów: 606
Dołączył: 20-09-2009
Post: #2
RE: Heniek - czyli prosty DDS z grafiką
Witam Ryszard.
Proponuję założyć nowy wątek np: dds- składak arduino.
Bo te kody mają ogromną wartość naukową dla takich jak ja.
Pojawiają się pytania.
Żeby nie zaśmiecać Heńka, proszę o nowy wątek.
Pozdrawiam.

Andrzej
11-10-2014 17:26
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9MDD Offline
Rysiek
****

Liczba postów: 378
Dołączył: 01-02-2009
Post: #3
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
proszę Wink

...przede wszystkim nie zakłócać...
11-10-2014 18:23
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6AUO Offline
Andrzej
****

Liczba postów: 606
Dołączył: 20-09-2009
Post: #4
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Dzięki.
Pytanie brzmi czy ten program dotyczy wyświetlacza który kupiłem po Burzeninie 2013.(trochę mi pamięć zatarło)
Płytka 43 x 43 mm. Brak napisu z nazwą.Po jednej stronie 8 pinów i po drugiej to samo.
Chyba kupiłem od noki.
Przerobiłem 3 kursy programowanie w C.
Jakoś nie potrafię to ogarnąć.Zmontowałem m0nka bo był komplet źródłowy.
Wyszło,że za wysoko postawiłem poprzeczkę.
Arduino 1.0.5. ,taką wersję zainstalowałem rok temu.
Gdzie można pobrać #include <AH_AD9850.h> i te inne.
Postaram się trochę doczytać.

Andrzej
(Ten post był ostatnio modyfikowany: 11-10-2014 19:37 przez SP6AUO.)
11-10-2014 19:37
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9MDD Offline
Rysiek
****

Liczba postów: 378
Dołączył: 01-02-2009
Post: #5
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Tak ten wyświetlacz nokii, to napewno da się podpiąć, popatrz w kodzie jest rozpiska które piny LCD do których pinów arduino.

Kod:
// inicjalizujemy wyświetlacz
// lcd    - arduino
// sclk   - PIN 7
// sdin   - PIN 6
// dc     - PIN 5
// reset  - PIN 3
// sce    - PIN 4
PCD8544 lcd = PCD8544(7,6,5,3,4);

Pokombinuj, po zaprogramowaniu i podłączeniu powinno się coś wyświetlać.

Biblioteki w załączeniu, pasuje pod arduino 1.0.4, 1.0.5., 1.0.6 pod innymi nie sprawdzałem.


Załączone pliki
.zip  libraries.zip (Rozmiar: 807.91 KB / Pobrań: 870)

...przede wszystkim nie zakłócać...
11-10-2014 19:54
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6AUO Offline
Andrzej
****

Liczba postów: 606
Dołączył: 20-09-2009
Post: #6
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Mam już wyświetlacz ustalony nokia 5110.
İmage
mam już zainstalowany <AH_AD9850.h>.
Teraz zajmę się Twoim załącznikiem.

Andrzej
11-10-2014 20:28
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9MDD Offline
Rysiek
****

Liczba postów: 378
Dołączył: 01-02-2009
Post: #7
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Czyli jeszcze najprostszy encoder syntezer i jakiś odbiornik kontrolny by słuchać efektów pracy... daj znać jak odpalisz Andrzej Wink

...przede wszystkim nie zakłócać...
11-10-2014 20:37
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6AUO Offline
Andrzej
****

Liczba postów: 606
Dołączył: 20-09-2009
Post: #8
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Już daję.
İmage İmage
nie mogę zweryfikować.
Brak PCD8544.h

Mam taką wersję do 5110 ale coś nie pasuje.Ten napis na dole.
İmage

Andrzej
(Ten post był ostatnio modyfikowany: 11-10-2014 21:02 przez SP6AUO.)
11-10-2014 20:59
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9MDD Offline
Rysiek
****

Liczba postów: 378
Dołączył: 01-02-2009
Post: #9
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Tylko się upewniam, biblioteki wrzuciłeś do katalogu libraries w folderze instalacyjnym arduino? Bo wygląda na to że nie masz bibliotek.

...przede wszystkim nie zakłócać...
11-10-2014 21:08
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6AUO Offline
Andrzej
****

Liczba postów: 606
Dołączył: 20-09-2009
Post: #10
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Tak już są ale efektów brak.

Andrzej
(Ten post był ostatnio modyfikowany: 11-10-2014 21:52 przez SP6AUO.)
11-10-2014 21:52
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości