BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   aiuto realizzazione piccolo circuito x controllare telecamera (https://www.baronerosso.it/forum/circuiti-elettronici/349941-aiuto-realizzazione-piccolo-circuito-x-controllare-telecamera.html)

Robby Naish 04 dicembre 15 17:28

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 4788577)
Questo... cosa? Mi sa che manca un link.... :)

Carlo

Eccolo Carlo

theremino | the real modular input output

ElNonino 04 dicembre 15 17:43

Questo:

http://elexyz.altervista.org/en/wp-c...serial_pic.jpg

Mi ero dimenticato di mettere il link all'immagine, sorry.

:yeah:

turborocket 04 dicembre 15 18:42

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 4788443)
Tu non lo sai, ma già c'è!!!!

Comunque ho buttato giù un po di codice, giusto come punto di partenza.

Carlo

// ingressi canali radio
byte pinCH1 = 2; // canale x ricevente
unsigned int durationCH1;

// Uscite digitali
byte pinScatto = 6; // comando fotocamera

// soglia di comando dei canali radio
const unsigned long sogliaCH1a = 1700; // Soglia tra posizione 1 e 2
const unsigned long sogliaCH1b = 1200; // Soglia tra posizione 0 e 1

// variabili di appoggio
int valInterruttore = 0;
int valAzione = 0;

void setup()
{
// definisco i canai di input dalla radio
pinMode(pinCH1, INPUT); // canale x ricevente

}

void loop()
{
// leggo i canali radio
durationCH1 = pulseIn(pinCH1, HIGH);

// quì gestisco il valore letto.
// Quello che segue è solo un esempio di come si può fare
// in base allo stato dell'interruttore (ed eventualmente della sua storia)
// devi definire le azioni da fare
// impostando correttamente la variabile valAzione
valInterruttore = 0;
valAzione = 0; // nessun contatto
if (durationCH1>sogliaCH1b) {
valInterruttore = 1;
valAzione = 1; // contatto breve
};
if (durationCH1>sogliaCH1a) {
valInterruttore = 2;
valAzione = 2; // contatto lungo
};

switch (valInterruttore) {
case 0: // non faccio nulla
break;
case 1: // contatto breve
analogWrite(pinScatto, 255); //chiudo il contatto
delay(100); // aspetto 100 millisecondi
analogWrite(pinScatto, 255); // riapro il contatto
break;
case 2:
analogWrite(pinScatto, 255); //chiudo il contatto
delay(700); // aspetto 700 millisecondi
analogWrite(pinScatto, 255); // riapro il contatto
break;
// default:
// if nothing else matches, do the default
// default is optional
};
delay(100); //rallento il ciclo, aspettando 100 millisecondi tra una lettura e la successiva
}

avendo qualche conoscenza di c++ non mi è sembrato tutto arabo...ma devo studiarmi meglio il codice!
vediamo se ho capito:

sul pin 2 hai il collegamento con la ricevente(pin di input), sul pin 6 hai invece la camera(non va dichiarato come pin di output?).

Le sogliein che unità di misura sono??

La funzione pulseIN() mi interpreta il sengale giusto?
inzializzo le 2 variabili a 0
confronto il pin di input con la sogliaB del comando dalla radio
se pin 2>sogliaB
allora do contatto breve
altrimenti
se pin 2 è compreso tra soglaiA e sogliaB
allora do contatto lungo
altrimenti se pin 2 è < sogliaA
allora non faccio azioni

Casi:
nessuna azione ricomincio il ciclo con ritardo di 100ms;
contatto breve mando un segnale al pin 6 con duty cicle a 255ms della durata di 100 ms
riapro il contatto(la sintassi giusta non dovrebbe essere "analogWrite(pinScatto, 0);"?)
contato lungo mando un segnale al pin 6 con duty cicle a 255ms della durata di 700ms
riapro il contatto(la sintassi giusta non dovrebbe essere "analogWrite(pinScatto, 0);"?)

Ricomincio il ciclo


ho tradotto giusto?
ho una domanda, perche viene utilizzato analogWrite () se ho ben capito, genera un segnale pwm? non ho bisogno di un segnale fisso invece?

CarloRoma63 07 dicembre 15 12:39

Citazione:

Originalmente inviato da turborocket (Messaggio 4788682)
avendo qualche conoscenza di c++ non mi è sembrato tutto arabo...ma devo studiarmi meglio il codice!
vediamo se ho capito:

sul pin 2 hai il collegamento con la ricevente(pin di input), sul pin 6 hai invece la camera(non va dichiarato come pin di output?).

Le sogliein che unità di misura sono??
sono microsecondi.

La funzione pulseIN() mi interpreta il sengale giusto?
Legge la lunghezza (in microsecondi) dell'impulso presente su quel pin.
inzializzo le 2 variabili a 0
confronto il pin di input con la sogliaB del comando dalla radio
se pin 2>sogliaB
allora do contatto breve
altrimenti
se pin 2 è compreso tra soglaiA e sogliaB
allora do contatto lungo
altrimenti se pin 2 è < sogliaA
allora non faccio azioni

Casi:
nessuna azione ricomincio il ciclo con ritardo di 100ms;
contatto breve mando un segnale al pin 6 con duty cicle a 255ms della durata di 100 ms
riapro il contatto(la sintassi giusta non dovrebbe essere "analogWrite(pinScatto, 0);"?)
contato lungo mando un segnale al pin 6 con duty cicle a 255ms della durata di 700ms
riapro il contatto(la sintassi giusta non dovrebbe essere "analogWrite(pinScatto, 0);"?)

Ricomincio il ciclo


ho tradotto giusto?
ho una domanda, perche viene utilizzato analogWrite () se ho ben capito, genera un segnale pwm? non ho bisogno di un segnale fisso invece?
hai ragione, però analogwrite(255) è equivalente a digitalwrite(HIGH) e quindi puoi usarli entrambi

In rosso alcune risposte.
Per la logica di funzionamento sei tu a doverla definire nel dettaglio, io ti ho solo postato una bozza. Devi capire, per ogni spostamento dell'interruttore (da quale posizione a quale posizione ed in che tempi) quali azioni devono essere svolte, cercando di non dimenticare delle situazioni che postrebbero poi non essere gestite o portarti ad avere comportamenti non desiderati.

Carlo

CarloRoma63 07 dicembre 15 12:54

Citazione:

Originalmente inviato da turborocket (Messaggio 4788682)
avendo qualche conoscenza di c++ non mi è sembrato tutto arabo...ma devo studiarmi meglio il codice!
vediamo se ho capito:

sul pin 2 hai il collegamento con la ricevente(pin di input), sul pin 6 hai invece la camera(non va dichiarato come pin di output?).
da https://www.arduino.cc/en/Reference/AnalogWrite
You do not need to call pinMode() to set the pin as an output before calling analogWrite().


Le sogliein che unità di misura sono??

La funzione pulseIN() mi interpreta il sengale giusto?
inzializzo le 2 variabili a 0
confronto il pin di input con la sogliaB del comando dalla radio
se pin 2>sogliaB
allora do contatto breve
altrimenti
se pin 2 è compreso tra soglaiA e sogliaB
allora do contatto lungo
altrimenti se pin 2 è < sogliaA
allora non faccio azioni

Casi:
nessuna azione ricomincio il ciclo con ritardo di 100ms;
contatto breve mando un segnale al pin 6 con duty cicle a 255ms della durata di 100 ms
riapro il contatto(la sintassi giusta non dovrebbe essere "analogWrite(pinScatto, 0);"?)
Hai ragione, nella fretta del cut&past non ho corretto il valore da impostare

contato lungo mando un segnale al pin 6 con duty cicle a 255ms della durata di 700ms
riapro il contatto(la sintassi giusta non dovrebbe essere "analogWrite(pinScatto, 0);"?)
Hai ragione, nella fretta del cut&past non ho corretto il valore da impostare
Ricomincio il ciclo


ho tradotto giusto?
ho una domanda, perche viene utilizzato analogWrite () se ho ben capito, genera un segnale pwm? non ho bisogno di un segnale fisso invece?

Altre note.
Carlo

turborocket 08 dicembre 15 00:35

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 4790378)
Altre note.
Carlo

grazie di nuovo....sto aspettando che mi arrivi il mio ardunano per provare!!!

unaltra domanda, esiste già uno sketch per pilotare una gopro, oppure altre actioncam simili?

CarloRoma63 09 dicembre 15 08:41

Citazione:

Originalmente inviato da turborocket (Messaggio 4790839)
grazie di nuovo....sto aspettando che mi arrivi il mio ardunano per provare!!!

unaltra domanda, esiste già uno sketch per pilotare una gopro, oppure altre actioncam simili?

Non ne ho idea, prova a googolare.....

Carlo


Tutti gli orari sono GMT +2. Adesso sono le 00:53.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002