Show Posts
Pages: 1 2 [3] 4 5 ... 40
31  International / Hardware / come mettere sensori npn induttivi in parallelo on: January 01, 2014, 03:07:15 pm
ciao
ho la necessità di mettere in parallelo dei sensori npn e ho fatto questo schema, vorrei la Vs opinione.
In rete ho trovato alcuni schemi che prevedono l'uso di diodi ma non prevedevano l'uso di fotoaccoppiatori, sono comunque necessari?

grazie
stefano
32  International / Software / Re: come utilizzare due interrupt on: October 09, 2013, 04:11:32 am
ciao
ho risolto c'era un punto e virgola alla fine di questo IF
Code:
if(deltatempoDX > ritardo);

grazie e scusate

stefano

se il mod lo ritiene può cancellare la discussione
33  International / Software / Re: come utilizzare due interrupt on: October 09, 2013, 03:55:51 am
ciao
ho fatto questo:
Code:
volatile unsigned long tempoDX0;
e questo:
Code:
volatile unsigned long tempoDX0;
questa è la parte di codice incriminata:
Code:
 //------------------------sensore 1 DX
  if(statosensoreDX==HIGH)      
  {  
  digitalWrite(4,HIGH);
  statosensoreDX=LOW;

  }
  tempoDX=millis();
  deltatempoDX=tempoDX-tempoDX0;
  
   Serial.print("tempoDX ");
Serial.println(tempoDX);
    Serial.print("tempoDX0 ");
Serial.println(tempoDX0);
  Serial.print("deltatempoDX ");
 Serial.println(deltatempoDX);
  
  if(deltatempoDX > ritardo);
  {
    digitalWrite(4,LOW);
  }
e questo è l'output:
Code:
tempoDX 20153
tempoDX0 19354
deltatempoDX 799
tempoDX 20203
tempoDX0 19354
deltatempoDX 849
tempoDX 20254
tempoDX0 19354
deltatempoDX 900
tempoDX 20305
tempoDX0 19354
deltatempoDX 951
tempoDX 20357
tempoDX0 19354
deltatempoDX 1003
tempoDX 20408
tempoDX0 19354
deltatempoDX 1054
tempoDX 20460
tempoDX0 19354
deltatempoDX 1106
tempoDX 20512
tempoDX0 19354
deltatempoDX 1158
il ritardo vale 2000, ma sembra che il codice dentro il secondo IF venga eseguito anche se deltatempoDX è minore di 2000 infatti il led si accende in corrispondenza del primo IF per poi spegnersi

stefano
34  International / Software / Re: come utilizzare due interrupt on: October 09, 2013, 03:38:24 am
ciao
ho fatto questo:
Code:
volatile int statosensoreDX=LOW;  //stato iniziale del sensore
volatile int statosensoreSX=LOW;  //stato iniziale del sensore
e questo:
Code:
attachInterrupt(0,sensoreDX,LOW); //sensore DX collegato al pin 2
  attachInterrupt(1,sensoreSX,LOW); //sensore SX collegato al pin 3
nessun risultato, funziona solo la parte di codice per il sensore di SX pin 3, la parte di codice per il sensore di DX pin 2 non entra nell'IF

grazie
stefano
35  International / Software / Re: come utilizzare due interrupt on: October 09, 2013, 02:57:30 am
ciao
questo è il nuovo codice ma ancora non funziona, ho verificato i segnali anche con l'oscilloscopio, ma è sono a posto, succede una cosa strana la parte di codice relativo al sensore DX se tolgo i SERIALPRINT il led non si accende se li lascio si accende ma senza entrare nell'IF, cioè si accende quando si attiva il sensore, la parte di codice che lavora correttamente è quella relativa al sensore di SX.

Code:
/*
per verificare il flusso di semi
09102013
 
 */
//#include <LiquidCrystal.h>  // include the library code
//LiquidCrystal lcd(9,8,7,6,5,4); // initialize the library with the numbers of the interface pins

int sensorPin=A0;    // select the input pin for the potentiometer
int sensorValue;  // variable to store the value coming from the sensor
int sensorValuesomma;  // variable to store the value coming from the sensor
int ritardo;

int statosensoreDX=LOW;  //stato iniziale del sensore
int statosensoreSX=LOW;  //stato iniziale del sensore

unsigned long tempoDX;
unsigned long tempoDX0;

unsigned long tempoSX;
unsigned long tempoSX0;

unsigned long deltatempoDX=0;
unsigned long deltatempoSX=0;

void setup()
{
  // lcd.begin(16,4);  // set up the LCD's number of columns and rows:
//tempoDX=0;
tempoDX0=0;

//tempoSX=0;
tempoSX0=0;

deltatempoDX=0;
deltatempoSX=0;

sensorValue=0;  // variable to store the value coming from the sensor
sensorValuesomma=0;  // variable to store the value coming from the sensor

  attachInterrupt(0,sensoreDX,FALLING); //sensore SX collegato al pin 2
  attachInterrupt(1,sensoreSX,FALLING); //sensore DX collegato al pin 3

  //pinMode(2,INPUT);//sensore dx
   // digitalWrite(2,LOW);
 // pinMode(3,INPUT);//sensore sx
  //  digitalWrite(3,LOW);
  
    pinMode(4,OUTPUT);//sensore dx
 //digitalWrite(4,LOW);
    pinMode(5,OUTPUT);//sensore sx
 // digitalWrite(5,HIGH);
 ritardo=2000;
 Serial.begin(9600);
}

void loop()
{
  /* for(int i=0;i<=5;i++)
  {
    sensorValue=analogRead(sensorPin);
    sensorValuesomma+=sensorValue;
  }
    ritardo=20000.0/1024*sensorValuesomma/6;
    sensorValuesomma=0;
 */
//Serial.println(ritardo);
  //------------------------sensore 1 DX
  if (statosensoreDX==HIGH)      
  {  
  digitalWrite(4,HIGH);
  statosensoreDX=LOW;
  }
  tempoDX=millis();
  deltatempoDX=tempoDX-tempoDX0;
  
/*   Serial.print("tempoDX ");
Serial.println(tempoDX);
    Serial.print("tempoDX0 ");
Serial.println(tempoDX0);
  Serial.print("deltatempoDX ");
 Serial.println(deltatempoDX);
*/  
  if(deltatempoDX>ritardo);
  {
    digitalWrite(4,LOW);
  }
  //------------------------sensore 2 SX
  if (statosensoreSX==HIGH)      
  {  
  digitalWrite(5,HIGH);
  statosensoreSX=LOW;
  }
  tempoSX=millis();
  deltatempoSX=tempoSX-tempoSX0;
/*  
  Serial.print("tempoSX ");
Serial.println(tempoSX);
    Serial.print("tempoSX0 ");
Serial.println(tempoSX0);  
  Serial.print("deltatempoSX ");
Serial.println(deltatempoSX);
 */
  if(deltatempoSX>ritardo)
  {
    digitalWrite(5,LOW);
  }  
}

void sensoreDX() //pin 2 a cui attaccare il sensore IR DX
{
  statosensoreDX=HIGH;
  tempoDX0=millis();
}
void sensoreSX() //pin 3 a cui attaccare il sensore IR SX
{
  statosensoreSX=HIGH;
  tempoSX0=millis();
}

36  International / Software / Re: come utilizzare due interrupt on: October 09, 2013, 12:59:32 am
ciao
ho invertito ma senza nessun risultato,senza inversione del risultato, ho anche cambiato scheda ma niente

stefano
37  International / Software / [risolto] come utilizzare due interrupt on: October 08, 2013, 02:23:08 pm
ciao
sto ultimando un progetto con arduino 1 r3, sto facendo dei test e da quello che vedo funziona solo un interrupt.
Uso due sensori fotoelettrici ir a 12v due fotoaccoppiatori per convertire il livello delle tensioni, sensori funzionano e i foto pure, però mi si accende e spegne solo un led, l'altro riamane sempre acceso sembra che funzioni solo un interrupt
vi sottopongo lo sketch per una verifica grazie per i suggerimenti
Code:
/*
per verificare il flusso di semi
04102013
 
 */
//#include <LiquidCrystal.h>  // include the library code
//LiquidCrystal lcd(9,8,7,6,5,4); // initialize the library with the numbers of the interface pins

int sensorPin=A0;    // select the input pin for the potentiometer
int sensorValue=0;  // variable to store the value coming from the sensor
int sensorValuesomma=0;  // variable to store the value coming from the sensor
int ritardo;

int statosensoreDX=HIGH;  //stato iniziale del sensore
int statosensoreSX=HIGH;  //stato iniziale del sensore

unsigned long tempoDX;
unsigned long tempoDX0;

unsigned long tempoSX;
unsigned long tempoSX0;

int deltatempoDX=0;
int deltatempoSX=0;

void setup()
{
  // lcd.begin(16,4);  // set up the LCD's number of columns and rows:
tempoDX=0;
tempoDX0=0;

tempoSX=0;
tempoSX0=0;

  attachInterrupt(0,sensoreDX,FALLING); //sensore collegato al pin 2
  attachInterrupt(1,sensoreSX,FALLING); //sensore collegato al pin 3

  pinMode(2,INPUT);//sensore dx
   // digitalWrite(2,HIGH);
  pinMode(3,INPUT);//sensore sx
    //digitalWrite(3,HIGH);
  
    pinMode(6,OUTPUT);//sensore dx
  digitalWrite(6,LOW);
    pinMode(5,OUTPUT);//sensore sx
  digitalWrite(5,LOW);

// Serial.begin(9600);
}

void loop()
{
   for(int i=0;i<=5;i++)
  {
    sensorValue=analogRead(sensorPin);
    sensorValuesomma+=sensorValue;
  }
    ritardo=20000.0/1024*sensorValuesomma/6;
    sensorValuesomma=0;
  
//Serial.println(ritardo);
  //------------------------sensore 1

  if (statosensoreDX==LOW)      
  {  
  digitalWrite(6,LOW);
  statosensoreDX=HIGH;
  }
  tempoDX0=millis();
  deltatempoDX=tempoDX0-tempoDX;
  
  if(deltatempoDX>ritardo);// stop the program for <sensorValue> milliseconds)
  {
    digitalWrite(6,HIGH);
  }
  //------------------------sensore 2
  if (statosensoreSX==LOW)      
  {  
  digitalWrite(5,LOW);
  statosensoreSX=HIGH;
  }
  tempoSX0=millis();
  deltatempoSX=tempoSX0-tempoSX;
  
  if(deltatempoSX>ritardo)
  {
    digitalWrite(5,HIGH);
  }
}

void sensoreDX() //pin 2 a cui attaccare il sensore IR 1
{
  statosensoreDX=LOW;
  tempoDX=millis();
}
void sensoreSX() //pin 3 a cui attaccare il sensore IR 2
{
  statosensoreSX=LOW;
  tempoSX=millis();
}

grazie
stefano
38  International / Hardware / Re: ( RISOLTO) che sensore per mantenere parallelo un piano? on: September 18, 2013, 01:25:43 pm
ciao
ho e sto lavorando con cilindri ad aria e da quello che vedo è difficile far muovere con sincronismo due cilindri ad aria causa la comprimibilità della stessa, questo non toglie che discreti risultati possano essere ottenuti se le velocità sono basse

stefano
39  International / Generale / Re: Sono celle di carico? on: August 12, 2013, 02:09:08 am
ciao
ma non è più corretto fare la somma?

stefano
40  International / Generale / [OT] caricare batteria li ion on: August 04, 2013, 09:09:56 am
ciao
cerco uno schema per ricaricare una batteria Li ion da 7.4 v di una nikon, perchè sono rimasto, all'estero, senza carica batterie e i negozi della zona, sempre illuminati a festa, non tengono accessori, ho un negozio dove forse riesco a trovare i componenti, ho trovato degli schemi ma volevo qualcosa di affidabile, se serve ho un arduino con me è diventato il mio compagno di viaggio

stefano

ps
 ho postato anche sul forum nikon
 
41  International / Hardware / Re: sensore di peso on: July 31, 2013, 12:31:48 pm
ciao
vanno insieme

42  International / Generale / Re: Robot per l'agricoltura on: July 31, 2013, 12:27:17 pm
ciao
secondo me è una cosa fattibile ma molto complessa e credo che minimo si debba arrivare a qualcosa di simile a quello allegato

stefano
43  International / Software / Re: Switch analogico pressione o click on: July 16, 2013, 04:19:40 am
ciao
per essere fattibile e' fattibile, ma vuoi che ti si scriva il codice?
se vuoi solo delle indicazioni io lo farei con la istruzione IF dove vai a verificare che il valore di A0 sia all'interno di un range che stabilisci tu, 4 switch quindi 4 valori per A0 quindi 4 IF

stefano
44  International / Software / Re: visualizzare due serial monitor on: July 14, 2013, 11:31:59 am
Usa Putty se hai windows ti crei 2 sessioni sulle 2 com e in più puoi salvare su file le stampe dei serial print
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

bello, mi sarà utile

grazie
stefano
45  International / Software / Re: visualizzare due serial monitor on: July 14, 2013, 11:25:04 am
fai così:
apri una finestra dell'ide e selezioni la porta del primo arduino, tenendo aperti sia il serial monitor che la finestra dell'ide
apri una seconda finestra dell'ide (rifai il doppio click sul desktop o sull'eseguibile dell'ide insomma), selezioni la com del secondo arduino ed apri il monitor seriale
si questa procedura funziona

@pablos provo anche la tua soluzione sembra interessante

grazie
stefano
Pages: 1 2 [3] 4 5 ... 40