26-07-2017, 08:51
Poniewaz jak pisalem chce zbudowac generator na bazie Ad9850 sterowany Arduino Nano i chce aby byly generowane rozne zestawy czestotliwosci. Zbudowalem kilka programow zawierajacych rozne zestawy ale wszystkie one roznia sie wylacznie parametrami typu: nazwa zestawu, tablica czestotliwosci, ilosc czestotliwosci w tablicy i ewentualnie czas trwania emisji pojedynczej czestotliwosci. Postanowilem po zapoznaniu sie z dokumentacja zbudowac funkcje ktora bedzie uruchamiala i sterowala AD9850 oraz wyswietlacz LCD 16x2 na podstawie dostarczonych informacji o: nazwie zestawu, ilosci czestotliwosci w zestawie, oraz tablicy czestotliwosci do wygenerowania w danym zestawie.
Po wielu probach udalo mi sie wykonac program ktory przechodzi test kompilacji poprawnie ale niestety nie dziala poprawnie bowiem dziala tylko przekazanie nazwy do funkcji i ilosci czestotliwosci w zestawie natomiast tablica czestotliwosci nie jest odczytywana w zwiazku z tym generator generuje przypadkowe czestotliwosci.
Ponizej kod programu "Funkcja1":
Uklad z funkcja ma umozliwic mi zbudowanie menu wyboru zestawu do uruchomienia przy pomocy switch/case
bo w kazdym case bedzie inny zestaw parametrow do uruchomienia tej samej funkcji.
Czy ktos moze mi wskazac blad ktory zrobilem?
Program w tej postaci jest weryfikowany poprawnie ale zestaw, tablica czestotliwosc podany w nawiasie nie jest przetwarzany przez funkcje.
Prosze o pomoc w rozwiazaniu problemu.
Po wielu probach udalo mi sie wykonac program ktory przechodzi test kompilacji poprawnie ale niestety nie dziala poprawnie bowiem dziala tylko przekazanie nazwy do funkcji i ilosci czestotliwosci w zestawie natomiast tablica czestotliwosci nie jest odczytywana w zwiazku z tym generator generuje przypadkowe czestotliwosci.
Ponizej kod programu "Funkcja1":
Kod:
//include LCD library
#include <LiquidCrystal.h>
// include the DDS Library:
#include <DDS.h>
int ledpin = 13;
//Instatiate LCD
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
// Instantiate the DDS...
DDS dds(5, 4, 3, 2);
/*unsigned long freq[] = {60, 820, 2500, 20000, 65000, 207460, 479930, 527000, 749000, 986220,
110, 240, 620, 850, 118330, 209180, 321000, 544100, 631170, 705000,
350, 12800, 88500, 125680, 240000, 470000, 592500, 625230, 723010, 70,
570, 87500, 175160, 322060, 476500, 667000, 742000, 985670}; */
//list of a frequencies here above
//int n = 38; //number of a frequencies in an array
char Name[10];
int n();
unsigned long freq[100];
//Tu zaczyna sie funkcja
void wykonaj(char Name[10], int n, unsigned long freq[100])
{
for (int i=0; i<n; i++)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name);
lcd.print(" ");
lcd.print(i);
digitalWrite(ledpin, HIGH);
dds.setFrequency(freq[i]);
lcd.setCursor(0, 1);
lcd.print(freq[i]);
lcd.print(" Hz");
delay(180000);
if (i == n);
{
digitalWrite(ledpin, LOW);
dds.init();
lcd.clear();
lcd.print("Koniec");
}
}
}
void setup()
{
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// initialize the LED output
pinMode(ledpin, OUTPUT);
// start up the DDS...
dds.init();
// (Optional) trim if your xtal is not at 125MHz...
// dds.trim(125000000); // enter actual osc freq
}
void loop() {
wykonaj("Tinitus", 38, (60, 820, 2500, 20000, 65000, 207460, 479930, 527000, 749000, 986220,
110, 240, 620, 850, 118330, 209180, 321000, 544100, 631170, 705000,
350, 12800, 88500, 125680, 240000, 470000, 592500, 625230, 723010, 70,
570, 87500, 175160, 322060, 476500, 667000, 742000, 985670));
}
Uklad z funkcja ma umozliwic mi zbudowanie menu wyboru zestawu do uruchomienia przy pomocy switch/case
bo w kazdym case bedzie inny zestaw parametrow do uruchomienia tej samej funkcji.
Czy ktos moze mi wskazac blad ktory zrobilem?
Program w tej postaci jest weryfikowany poprawnie ale zestaw, tablica czestotliwosc podany w nawiasie nie jest przetwarzany przez funkcje.
Prosze o pomoc w rozwiazaniu problemu.
Poczatki zawsze sa trudne :-)
Arduino Mega256, Nano, Pro Mini.
Arduino Mega256, Nano, Pro Mini.