Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
projets:patatas-de-goma:dev:code [2014/08/09 20:43] resonance créée |
projets:patatas-de-goma:dev:code [2014/08/09 21:46] (Version actuelle) resonance |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Codes Arduino ====== | ||
+ | |||
+ | ===== Standalone ===== | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
Ligne 33: | Ligne 36: | ||
delay(500); | delay(500); | ||
} | } | ||
- | </ | + | </code> |
+ | |||
+ | ===== Avec Pure Data (SerialCommand) ===== | ||
+ | {{: | ||
+ | |||
+ | < | ||
+ | // Controle avec Pure Data (SerialCommand) | ||
+ | |||
+ | // TIMER 0 : 5/6 | ||
+ | // TIMER 1 : 9/10 OCR1A/ | ||
+ | // TIMER 2 : 3/11 (TONE) | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | Tone tone1; | ||
+ | SerialCommand sCmd; | ||
+ | |||
+ | int pinTone1 = 3; | ||
+ | int pinPwm1 = 9; | ||
+ | |||
+ | int periodePWM = 800; //max duty cycle 800 marche avec polulu | ||
+ | |||
+ | void setup() { | ||
+ | // 16Mhz(horloge)/ | ||
+ | TCCR1A = 0b10100000; | ||
+ | TCCR1B = 0b00010001; | ||
+ | ICR1 = periodePWM; // 8Mhz/ | ||
+ | |||
+ | // PINS | ||
+ | pinMode(pinPwm1, | ||
+ | tone1.begin(pinTone1); | ||
+ | |||
+ | // SERIAL COMMAND | ||
+ | Serial.begin(115200); | ||
+ | sCmd.addCommand(" | ||
+ | sCmd.addCommand(" | ||
+ | sCmd.addCommand(" | ||
+ | sCmd.setDefaultHandler(unrecognized); | ||
+ | Serial.println(" | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | sCmd.readSerial(); | ||
+ | } | ||
+ | |||
+ | // -------------- KLAXON 1 ----------------- // | ||
+ | void kl1_pwm() { | ||
+ | float pwm; | ||
+ | char *arg; | ||
+ | arg = sCmd.next(); | ||
+ | if (arg != NULL) { | ||
+ | pwm = atoi(arg); | ||
+ | OCR1A = pwm * periodePWM * 0.01; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void kl1_tone() { | ||
+ | int aNumber, aNumber2; | ||
+ | char *arg; | ||
+ | |||
+ | arg = sCmd.next(); | ||
+ | if (arg != NULL) { | ||
+ | aNumber = atoi(arg); | ||
+ | } | ||
+ | |||
+ | arg = sCmd.next(); | ||
+ | if (arg != NULL) { | ||
+ | aNumber2 = atoi(arg); | ||
+ | tone1.play(aNumber, | ||
+ | } else { | ||
+ | tone1.play(aNumber); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // STOP | ||
+ | void kl1_stop() { | ||
+ | tone1.stop(); | ||
+ | } | ||
+ | |||
+ | // ----------- UNRECOGNIZED ----------------- // | ||
+ | void unrecognized(const char *command) { | ||
+ | Serial.println(" | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Standalone (avec LEDs) ===== | ||
+ | <code cpp> | ||
+ | // TIMER 0 : 5/6 | ||
+ | // TIMER 1 : 9/10 OCR1A/ | ||
+ | // TIMER 2 : 3/11 (TONE) | ||
+ | |||
+ | int periodePWM = 3500; // max duty cycle = 20khz | ||
+ | |||
+ | int pinTone1 = 3; | ||
+ | int pinPwm1 = 9; | ||
+ | float pwm1 = 80; // % | ||
+ | |||
+ | void setup() { | ||
+ | // 16Mhz(horloge) / 2 / 1(prescaler) : 8Mhz | ||
+ | TCCR1A = 0b10100000; | ||
+ | TCCR1B = 0b00010001; | ||
+ | ICR1 = periodePWM; // 8Mhz/ | ||
+ | OCR1A = pwm1 * periodePWM * 0.01; // out of pwm | ||
+ | |||
+ | // PINS | ||
+ | pinMode(pinTone1, | ||
+ | pinMode(pinPwm1, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | // LUMINOSITE DE LA LED | ||
+ | analogWrite(pinTone1, | ||
+ | delay(1000); | ||
+ | |||
+ | analogWrite(pinTone1, | ||
+ | delay(1000); | ||
+ | |||
+ | analogWrite(pinTone1, | ||
+ | delay(1000); | ||
+ | |||
+ | analogWrite(pinTone1, | ||
+ | delay(1000); | ||
+ | } | ||
+ | </code> |