28 marzo 20, 15:46 | #11 (permalink) Top | |
User Data registr.: 29-05-2006 Residenza: Catania
Messaggi: 2.933
| Citazione:
Il setup viene eseguito una sola volta, mentre il loop viene eseguito di continuo all'infinito. I comandi per regolare la velocità e la direzione dei motori devono andare dentro il loop. Prova questo. Dovrebbe funzionare, ma hai parecchie limitazioni e dovresti pulire parecchio il software. Fammi sapere Codice: int channel_1_us; int channel_2_us; int channel_3_us; int channel_4_us; int channel_5_us; int channel_6_us; signed int channel_1_perc; signed int channel_2_perc; int channel_3_perc; int channel_4_perc; int channel_5_perc; int channel_6_perc; int pwm_a = 3; //PWM control for motor outputs 1 and 2 int pwm_b = 9; //PWM control for motor outputs 3 and 4 int dir_a = 2; //direction control for motor outputs 1 and 2 int dir_b = 8; //direction control for motor outputs 3 and 4 int DIR_SX; int DIR_DX; signed int PWM_SX; signed int PWM_DX; void setup() { Serial.begin (9600); pinMode (4, INPUT); pinMode (5, INPUT); pinMode (6, INPUT); //pinMode (5, INPUT); //pinMode (6, INPUT); //pinMode (7, INPUT); pinMode(pwm_a, OUTPUT); //Set control pins to be outputs pinMode(pwm_b, OUTPUT); pinMode(dir_a, OUTPUT); pinMode(dir_b, OUTPUT); } void loop() { //leggi la durata dell'impulso sui 6 pin channel_1_us = pulseIn (4, HIGH); channel_2_us = pulseIn (5, HIGH); channel_3_us = pulseIn (6, HIGH); //channel_4_us = pulseIn (5, HIGH); //channel_5_us = pulseIn (6, HIGH); //channel_6_us = pulseIn (7, HIGH); //limita la durata dell'impulso tra 1000 e 2000us e poi scalalo tra 0 e 100 //channel_1_perc = map(constrain(channel_1_us, 1000, 2000), 1000, 2000, 0, 100); //channel_2_perc = map(constrain(channel_2_us, 1000, 2000), 1000, 2000, 0, 100); channel_3_perc = map(constrain(channel_3_us, 1000, 2000), 1000, 2000, 0, 100); channel_4_perc = map(constrain(channel_4_us, 1000, 2000), 1000, 2000, 0, 100); channel_5_perc = map(constrain(channel_5_us, 1000, 2000), 1000, 2000, 0, 100); channel_6_perc = map(constrain(channel_6_us, 1000, 2000), 1000, 2000, 0, 100); channel_1_perc = map(constrain(channel_1_us, 1000, 2000), 1000, 2000, -100, 100); channel_2_perc = map(constrain(channel_2_us, 1000, 2000), 1000, 2000, -100, 100); PWM_SX = channel_1_perc + channel_2_perc/1; PWM_DX = channel_1_perc - channel_2_perc/1; if (PWM_SX>=0){DIR_SX = 1;}else{DIR_SX = 0;}; PWM_SX = map(abs(constrain(PWM_SX, -100, 100)), 0, 100, 0, 255); if (PWM_DX>=0){DIR_DX = 1;}else{DIR_DX = 0;}; PWM_DX = map(abs(constrain(PWM_SX, -100, 100)), 0, 100, 0, 255); digitalWrite(dir_a, DIR_SX); digitalWrite(dir_b, DIR_DX); analogWrite(pwm_a, PWM_SX); analogWrite(pwm_b, PWM_DX); //stampa sul serial monitor i valori in microsecondi e in percentuale Serial.print("canale 1 microsec: "); Serial.println(channel_1_us); Serial.print("canale 1 %: "); Serial.println(channel_1_perc); Serial.print("canale 2 microsec: "); Serial.println(channel_2_us); Serial.print("canale 2 %: "); Serial.println(channel_2_perc); Serial.print("canale 3 microsec: "); Serial.println(channel_3_us); Serial.print("canale 3 %: "); Serial.println(channel_3_perc); Serial.print("canale 4 microsec: "); Serial.println(channel_4_us); Serial.print("canale 4 %: "); Serial.println(channel_4_perc); Serial.print("canale 5 microsec: "); Serial.println(channel_5_us); Serial.print("canale 5 %: "); Serial.println(channel_5_perc); Serial.print("canale 6 microsec: "); Serial.println(channel_6_us); Serial.print("canale 6 %: "); Serial.println(channel_6_perc); Serial.println(""); delay (2000); }
__________________ Il filo attaccato all'antenna non mente mai....Troppo vento, si torna a casa.... I miei circuiti elettronici autocostruiti: Postbruciatore per ventole intubate ; Circuito luci per aeromodello-elimodello ; Rallenta servo con protezione da corto circuito | |
28 marzo 20, 18:36 | #12 (permalink) Top |
User Data registr.: 03-08-2009 Residenza: Borgosesia
Messaggi: 262
|
che pirla.... potevo arrivarci anche da solo, è logico. grazie. l'ho provato al volo e sembra funzionare, anche se c'è molto ritardo dall'imput dei comandi alla risposta sui motori, inoltre devo capire se dando un comando verso un lato o l'altro i motori rallentano correttamente, così con il setup che ho ora (tutto su un tavolo) non capisco, devo costruire un piccolo accrocchio per fare dei test ti tengo aggiornato! |
28 marzo 20, 18:45 | #13 (permalink) Top | |
User Data registr.: 29-05-2006 Residenza: Catania
Messaggi: 2.933
| Citazione:
__________________ Il filo attaccato all'antenna non mente mai....Troppo vento, si torna a casa.... I miei circuiti elettronici autocostruiti: Postbruciatore per ventole intubate ; Circuito luci per aeromodello-elimodello ; Rallenta servo con protezione da corto circuito | |
Bookmarks |
| |
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
Carro armato scala 1:12 | ale2001 | Mezzi Corazzati | 25 | 17 aprile 20 20:11 |
Carro armato | chetto1965 | Compro | 1 | 05 marzo 15 21:19 |
carro armato rc | dadoelella | Compro | 4 | 12 febbraio 12 02:23 |
carro armato | Bontempogiovanni | Compro | 3 | 05 settembre 11 14:13 |
carro armato | simone maddy | Modellismo | 7 | 04 luglio 11 00:12 |