Salve a tutti vorrei costruire un generatore di onda quadrata come posso fare?
evitiamo questo
digitalWrite(led, HIGH);
delay(1);
digitalWrite(led, LOW);
delay(1);
grazie
Salve a tutti vorrei costruire un generatore di onda quadrata come posso fare?
evitiamo questo
digitalWrite(led, HIGH);
delay(1);
digitalWrite(led, LOW);
delay(1);
grazie
Con una cosa del genere:
http://www.ad7c.com/projects/ad9850-dds-vfo/
hai anche la sinusoidale.
Ci sono anche metodi più semplici, ma quel cosino costa poco.
qualcosa di piu semplice che programmo e mi da la frequenza che voglio.
non esiste un istruzione semplice
Se non devi variare il duty-cycle ... guarda l'istruzione tone()
Guglielmo
gpb01:
Se non devi variare il duty-cycle ... guarda l'istruzione tone()
Meglio ancora se usa il timer a 16 bit come generatore PWM, ottiene un onda quadra perfetta, volendo anche con duty variabile, in un ampio range di frequenze il tutto senza impegnare tempo CPU.
@Astro: ... mi ero adeguato a "... qualcosa di più semplice ..." ] ]
]
Guglielmo
come faccio a modificare la frequnza pwm
danyevo:
come faccio a modificare la frequnza pwm
Buongiorna a tutti o deciso di procedere con la libreria TimerOne.h, con questo codice
#include "TimerOne.h"
void setup()
{
pinMode(10, OUTPUT);
Timer1.initialize(10000); // initialize timer1, and set a 1/2 second period
Timer1.pwm(9, 512); // setup pwm on pin 9, 50% duty cycle
Timer1.attachInterrupt(callback); // attaches callback() as a timer overflow interrupt
}
void callback()
{
digitalWrite(10, digitalRead(10) ^ 1);
}
void loop()
{
}
non capisco alcune cose con questo modifico il timer : Timer1.initialize(10000);
questo lo lascio per avere l'onda quadra: Timer1.pwm(10, 512);
questo a che serve: Timer1.attachInterrupt(callback);
e perche devo srivere così: digitalWrite(10, digitalRead(10) ^ 1);
altre 2 cose come faccio a sapere la frequenza che mi viene fuori?
modificando il timer interno, cosa succede a tutto il resto del programma va piu veloce o piu lento
Grazie
Quelle istruzioni servono ad attaccare un interrupt all'overflow del contatore del timer 1.
Quando viene chiamata la ISR per gestire l'interrupt semplicemente viene alternato lo stato del pin facendo lo XOR dell'attuale stato.
Avrei bisogno di generare un onda quadra con frequenza variabile da 10Hz a 500Kz.
Con la funzione tone sarebbe possibile?
zanspace:
Avrei bisogno di generare un onda quadra con frequenza variabile da 10Hz a 500Kz.
Con la funzione tone sarebbe possibile?
No ... e forse non te ne sei accorto, ma il post e' vecchio di 5 anni, dovresti per cortesia, nel rispetto del regolamento, aprire un nuovo thread, grazie
Inoltre, sempre da regolamento, prima che un mod ti "sgridi" per non averlo fatto, presentati nell'apposita sezione in "Generale" .