Kod:
#define DATA 7
#define CL 6
#define CE 5
uint16_t Fpom = 1;
int Sterowanie = 255 ; //25 kHz10100000
void setup() {
pinMode(DATA, OUTPUT);
pinMode(CL, OUTPUT);
pinMode(CE, OUTPUT);
synteza();
}
void loop() {
}
void synteza(){
digitalWrite(CE, HIGH);
for( uint8_t idx=0; idx<14; idx++ ) //wysyłanie 14 bitów częstotliwości
{
if ( ( Fpom >> idx ) & 0x0001 )
{
digitalWrite(DATA, HIGH); // Pin DATA ustawiamy na 1
} else
{
digitalWrite(DATA, LOW) ; // Pin DATA ustawiamy na 0
}
zegarek(); // Generujemy impuls na linii CL
}
digitalWrite(DATA, LOW); //wysłanie T0
zegarek();
digitalWrite(DATA, LOW); //wysłanie T1
zegarek();
for( uint8_t idy=0; idy<8; idy++ ) //wysyłanie 14 bitów częstotliwości
{
if ( ( Sterowanie >> idy ) & 0x01 )
{
digitalWrite(DATA, HIGH);
} else
{
digitalWrite(DATA, LOW) ;
}
zegarek();
digitalWrite(DATA, LOW);
}
digitalWrite(CE, LOW);
}
void zegarek(){
digitalWrite(CL, LOW);
delay(10);
digitalWrite(CL, HIGH);
delay(10);
digitalWrite(CL, LOW);
delay(10);
}
I teraz problem w drugą stronę. Sterowanie przechodzi tylko jako postać dziesiętna korzystając z tej pętelki.