Visualizza messaggio singolo
Vecchio 27 maggio 14, 23:50   #1 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
Arduino Micro e Presa allievo maestro

gentilissimi lettori di Barone Rosso..
volevo condividere queste poche righe di software: dopo aver seguito lo schema elettrico consigliato da Flight Mode Simulator attraverso una resistenza da 680 ohm e un diodo zenner da 4,7 V possiamo portare FUORI i segnali digitali della nostra radio HITEC in formato TTL, buoni da mangiare per arduino o per qualunque micro controllore!
Di seguito la forma del segnale della presa allievo maestro della radio. Da notare che tra un treno di segnali e il successivo abbiamo una tensione di circa 10v.

____ __ ___ _ ___ _ __ __ ______________________
|____| |____| |_| |__| |__||__| |__| |____|


/*
Software by Fausto Giudice for arduino Leonardo & Arduino Micro

This software put into array_pulse the 7 digital signals from Master Slave cable of HITEC Eclipse7 . If the time of sigle pulse to be longer that 2500 uS, then start the pulse index from Zero:
array_pulse[0] -> ch-1 ; array_pulse[1] -> ch-2 ; array_pulse[2] -> ch-3 ; array_pulse[3] -> ch-4
array_pulse[4] -> ch-5 ; array_pulse[5] -> ch-6 ; array_pulse[6] -> ch-7
____________________________________...dice@gmail.com
*/
const int ch1 = 7; // interrupt 4
volatile unsigned long ch1_val;
volatile unsigned long microseconds_1;
volatile unsigned long array_pulse[7];
volatile int pulse;
//__________________________________________________ ______________
void setup()
{
pinMode(ch1, INPUT);
Serial.begin(9600);
pulse = 0;
attachInterrupt(4, CH1_val, CHANGE); // questo sul pin 7
}
//__________________________________________________ ______________
void loop()
{
// show the value of ch-7
Serial.println(array_pulse[6]);
delay(100);
}
//__________________________________________________ ______________
void CH1_val()
{
if(digitalRead(ch1) == HIGH)
{
microseconds_1 = micros();
}
else
{
ch1_val = micros() - microseconds_1;
if(ch1_val < 2500)
{
array_pulse[pulse] = ch1_val;
pulse++;
}
else
pulse = 0;
}
}
faustog_2 non รจ collegato   Rispondi citando