Show Posts
Pages: 1 2 3 [4] 5 6 ... 20
46  International / Software / Re: Lettura impostazioni da EEPROM on: October 30, 2012, 04:38:05 pm
Sisi scusa per la fretta mi sono espresso male! Io praticamente ho intenzione di leggere un dato x dalla eeprom e, utilizzare quello che leggo per impostare un dato y.. Vediamo se riesco così:)

Code:

If (x == 1)
{
Y = a;
}

If (x == 2)
{
Y = b;
}

void setup()
{
int x = eeprom.read(a);
}

void loop()
{

}



Per capire ancora meglio
Code:

#include <multiCameraIrControl.h>

Canon D5(9);

void setup()
{
}

void loop()
{
  D5.shutterNow();
  delay(5000);
  D5.shutterDelayed();
  delay(5000);
}


Io avrei bisogno di cambiare "Canon D5(9);" in base a quello che leggo dalla eeprom!

Se leggo 1 allora è Canon D5(9);
Se leggo 2 allora è Nikon(9);
...


Insomma spero di aver spiegato le mie intenzioni! smiley
47  International / Software / Lettura impostazioni da EEPROM on: October 30, 2012, 02:26:22 pm
Ciao a tutti, è la prima volta che utilizzo la libreria eeprom e ho un problema: Utilizzando la libreria multiCameraIrControl che permette di inviare sengali di scatto ir a diversi modelli di reflex, ho pensato di dare la possibilità di scegliere da un menu il modello di camera da utilizzare e quindi, il segnale ir che deve invaire.

Ora, ho creato un sistema su lcd che fa scorrere tutti i tipi di reflex disponibili, e tramite la pressione del tasto select memorizzare il "camera_index" su eeprom.
Tutto funziona correttamente per quanto riguarda la memorizzazione ma ora ho notato che la libreria ha bisogno di dichiarare il modello di camera  fuori dal loop e setup (in fase di inizializzazione quindi).

Ed invece la lettura della eeprom non avviene fuori da loop o setup, quello che sia.

A me servirebbe una cosa del genere:

-leggo su eeprom all'indirizzo X il camera_index.
-e poi in base al camera_index seleziono quello che desidero.

Tipo così:

Code:
//MULTICAMERA IR CONTROL SELECTION
  camera_index = EEPROM.read(0);
  Serial.println(camera_index);
  /*"Canon - 0"
   "Nikon - 1"
   "Minolta - 2"
   "Olympus - 3"
   "Pentax - 4"
   "Sony"  - 5*/
  if(camera_index == 0)
  {
    Serial.println("canon");
    Canon D5(11);
  }
   
  }
  if(camera_index == 1)
  {
    Serial.println("nikon");
    Nikon D5000(11);
  }
  if(camera_index == 2)
  {
    Serial.println("minolta");
    Minolta A900(11);
  }
  if(camera_index == 3)
  {
    Serial.println("olympus");
    Olympus E5(11);
  }
  if(camera_index == 4)
  {
    Serial.println("pentax");
    Pentax K7(11);
  }
  if(camera_index == 5)
  {
    Serial.println("sony");
    Sony A900(11);
  }

A me servirebbe fare questo fuori dal setup() o loop() ma a quanto pare la lettura dell'eeprom non è possibile farla lì fuori..

Qualche consiglio?

Grazie
48  International / Software / Re: Interrupt e delay() - alternative on: October 29, 2012, 04:46:14 am
Ok perfetto grazie!
49  International / Software / Re: Interrupt e delay() - alternative on: October 29, 2012, 04:39:53 am
Toglierei la print() dalla isr...

Sisi uso un casino di print su seriale per debug ma una volta apposto se non servono ho l'abitudine di toglierle.. Una cosa però per curiosità, perché hai specificato di toglierle dalla isr?! Sarebbe sbaglato in generale utilizzare/lasciare print su isr?

Grazie.
50  International / Software / Re: Un code visualizer per arduino. on: October 27, 2012, 01:28:57 pm
Non dico che è del tutto uno spreco, solo che a me non servono.

L'utilità di programmi come codedrawer non è per sviluppare il programma, servono per per realizzare la documentazione.

Ah ecco appunto!:)
51  International / Software / Re: Un code visualizer per arduino. on: October 27, 2012, 01:28:11 pm
Ma i diagrammi contribuiscono alla creazione di documentazione! E per i miei sketch sai che utilità!;) apparte gli scherzi.. Oltre a credere nell utilità dei diagrammi, ero curioso di sapere se esistesse qualche programma!:)
52  International / Software / Re: Un code visualizer per arduino. on: October 27, 2012, 01:14:13 pm
PS: I diagrammi a blocchi li facevo 25 anni a scuola smiley-yell

Cioè?smiley Significa che è uno spreco farli?smiley io quando riesco inizio sempre con dei diagrammi di flusso veramente..
53  International / Software / Un code visualizer per arduino. on: October 27, 2012, 12:22:03 pm
Ciao a tutti, oggi leggevo un articolo riguardante l'aggiornamento di un software di "code visualizer" di c++. Per chi non lo sapesse, questi software sono in grado di scandire il codice sorgente e "disegnare" dei diagrammi di flusso. Utile soprattuto per vedere le condizioni di if-else ad esempio..

Un esempio: http://www.codedrawer.com/

Mi chiedevo se qualcuno di voi avesse esperienza con questi software abbinati alla programmazione di arduino.

Grazie!
54  International / Software / Re: Interrupt e delay() - alternative on: October 26, 2012, 03:19:53 pm
@astro: Provato e funziona! smiley-wink

Grazie ancora

Sarebbe interessante se postassi il codice... smiley

Se ho capito bene i consigli di astro, a me è uscita una cosa del genere:) )

(Esempio:)

Code:

volatile int flag = 0;

void setup()
{               
 Serial.begin(9600);

 pinMode(7, OUTPUT);
 digitalWrite(7, LOW);
 attachInterrupt(0, int_0, RISING);  //interrupt se il pin digitale 2 rivela che lo stato passa da basso ad alto..*/
}

void loop()
{
  if (flag == 1)
  {
    Serial.println("Aspetto..:");
    delay(3000);
    Serial.println("Pin in LOW");
    digitalWrite(7, LOW);
    flag = 0;
  }

}


void int_0()           
{
Serial.println("Sono in int_0");
digitalWrite(7, HIGH);
flag = 1;
}
55  International / Software / Re: Interrupt e delay() - alternative on: October 26, 2012, 06:52:19 am
@astro: Provato e funziona! smiley-wink

Grazie ancora
56  International / Software / Re: Interrupt e delay() - alternative on: October 26, 2012, 06:42:06 am
Ciao a tutti, da titolo si capisce tutto, mi ritrovo una funzione di interrupt e ho bisogno di un delay tra l'HIGH e il LOW di uno pin.

Quando entri nella ISR setti il pin a HIGH e nel contempo attivi un flag (una variabile a tuo piacere), se all'interno della loop rilevi che il flag abbinato alla ISR è settato inizi il conteggio del tempo dopo il quale riporti il pin a LOW e resettare il flag, se usare la delay o la millis (consigliata) dipende da te.


Ok, proprio quello che volevo sapere!:) Ci provo subito e vediamo che succede!

Grazie
57  International / Software / Re: Interrupt e delay() - alternative on: October 26, 2012, 06:32:06 am
-attacco un'interrupt e mi rimane in attesa della variazione del pin X.
-la variazione avviene ed interviene la funzione associata all'interrupt, chiamata "int_func()"
-int_func() quando viene chiamata dovrebbe fare una cosa del  genere:
   -accendo led,
   -delay,
   -spengo led,


In realtà ora sto notando che esegunedo un delay tipo:

delay(500000);

Una "specie di delay" avviene ma invece di essere di 500 secondi dopo circa 15 secondi termina..
58  International / Software / Interrupt e delay() - alternative on: October 26, 2012, 05:37:57 am
Ciao a tutti, da titolo si capisce tutto, mi ritrovo una funzione di interrupt e ho bisogno di un delay tra l'HIGH e il LOW di uno pin.
Ho letto già che il delay non può funzionare con una funzione su interrupt ma non ho trovato un'alternativa..
Come faccio?
Grazie mille.
59  International / Software / Re: Task leOS, strano problema. on: October 25, 2012, 06:00:43 am
Praticamente come hai fatto tu vedrai l'ultima riga da visualizzare sempre nella seconda riga del display, non avrai mai la condizione in cui l'ultima riga da visualizzare passa sulla prima riga del display e la seconda viene visualizzata vuota (che potrebbe essere graficamente più accattivante).

O.o Hai ragione, questo non l'avevo notato! No io voglio la grafica accattivamente  smiley-cool anche questa cosa è da modificare, l'ultima riga da visualizzare deve spostarsi sulla prima riga del display.. Ci vorrebbe un'altra condizione nella srittura della seconda riga.. domani che torno vediamo che succede..
60  International / Software / Re: Task leOS, strano problema. on: October 25, 2012, 05:39:21 am
Boh forse stai vedendo qualcosa che io ancora non vedo, come ho detto ho scirtto quelle righe al volo quindi di sicuro qualche errore ce, per sicurezza comunque ho rifatto il tutto in C.
Cercando di essere il più fedele possibile a quello che avevo scritto io è uscito questo:

Code:

#include <stdio.h>
#define NUM_RIGHE 4

int main()
{
    int contatore = 0;
    char testo[] = "1234";
    int i = 1;
    while (i == 1)
    {
         
          printf("Contatore: %i \n\n\n\n", contatore);
          printf("Riga A: %c \n" , testo[contatore]);
          printf("Riga B: %c \n" , testo[contatore+1]);
         
          if(contatore >= (NUM_RIGHE-1)) //per far vedere 4 righe ho bisogno di 4 cicli
          {
                       contatore = 0;
                       }
                       
                       else
                       {
          contatore++;
          }
          getchar();
          }
   
   
   
    }

Questo riproduce lo scorrere del display di un testo di 4 righe.
L'unico errore che ho potuto notare ora rispetto allo sketch di prima è appunto la condizione di controllo del contatore che da:
Code:
if (contatore>NUM_RIGHE)
è passata a:
Code:
(contatore >= (NUM_RIGHE-1))

Ma questo almeno in C non provoca nessun errore se non il fatto di avere un paio di cicli in più per azzerare il contatore.

E' questo giusto? Con arduino mi provocherebbe un index out of bound no?
Vabè ripeto, domani che rientro potrò provare nel caso..smiley

Grazie
Pages: 1 2 3 [4] 5 6 ... 20