Discussione: costruire carro armato
Visualizza messaggio singolo
Vecchio 27 marzo 20, 20:57   #8 (permalink)  Top
Ch3ch2oh
User
 
Data registr.: 03-08-2009
Residenza: Borgosesia
Messaggi: 259
Thumbs down

in realtà di funzionante ho solo la parte di codice che mi serve per leggere i segnali:

int channel_1_us;
int channel_2_us;
int channel_3_us;
int channel_4_us;
int channel_5_us;
int channel_6_us;

int channel_1_perc;
int channel_2_perc;
int channel_3_perc;
int channel_4_perc;
int channel_5_perc;
int channel_6_perc;

void setup() {
Serial.begin (9600);
pinMode (2, INPUT);
pinMode (3, INPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);
pinMode (6, INPUT);
pinMode (7, INPUT);
}

void loop() {

//leggi la durata dell'impulso sui 6 pin
channel_1_us = pulseIn (2, HIGH);
channel_2_us = pulseIn (3, HIGH);
channel_3_us = pulseIn (4, 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);

//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);

in questi giorni ho provato, scritto e cestinato righe di codice, cercando in rete varie idee per comandare la mia motorshield ( https://www.futurashop.it/motor-shie...ata-8220-vma03)

ciò che mi blocca è come miscelare i canali per un movimento realistico da cingolato, sarebbe semplice usare 2 canali separati e farlo a mano, o usare i mix della radio..ma allora tanto varrebbe pormi la sfida di usare arduino

Sono ben lontano da definirmi anche solo pratico nell'uso del codice, però capisco cosa leggo e solitamemte riesco ad adattarlo alle mie esigenze. Ma in questo caso mi stà letteralmente fumando il cervello
Ch3ch2oh non è collegato   Rispondi citando