| | #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 | |
| | |
| | #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! |
| | |
| | #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 |