Show Posts
Pages: [1] 2 3
1  International / Hardware / Re: misurare distanza con encoder on: April 16, 2014, 11:57:33 am
 smiley-roll-blue smiley-roll-blue scusa avevo interpretato male la tua risposta
ah allora vuoi limitarlo, bene allora va bene,  il 7805 è un regolatore non un limitatore , per limitarlo collega una resistenza da 10k tra A oppure B  e il katodo di uno zener da 5V1 , l'anodo lo metti a massa , il segnale lo prelevi ai capi del Diodo zener

avevo capito che andava bene con quella frase scordandomi del resto... Farò come hai detto te! Grazie  smiley-grin
2  International / Hardware / Re: misurare distanza con encoder on: April 14, 2014, 04:38:42 am
ok grazie mille! Dato che i 7805 li ho già userei quelli... Grazie a tutti!
3  International / Hardware / Re: misurare distanza con encoder on: April 13, 2014, 03:30:02 pm
Come non detto smiley
Era solo per essere sicuro che arrivassero 5 volt e non di più
4  International / Hardware / Re: misurare distanza con encoder on: April 13, 2014, 02:43:14 pm
Ok grazie. Vorrei fare una domanda, molto probabilmente stupida, ma comunque voglio togliermi il dubbio.  Se al segnale collego un lm 7805 questo regola la tensione ai 5 canonici volt oppure è una sciocchezza?
5  International / Hardware / Re: misurare distanza con encoder on: April 13, 2014, 03:22:03 am
Vengono fuori impulsi o in open collector o TTl a 5V,   devi contarli, non misurarli... occhio che se non sai quello che stai facendo schiocchi l'encoder e allora si che devi accere ad illo per sostituirllo


Ok grazie. Q me interessa che l uscita non mi bruci gli ingressi di arduino
6  International / Hardware / Re: misurare distanza con encoder on: April 12, 2014, 06:35:08 am
ok grazie. c'è modo con un multimetro di vedere la tensione di uscita dal sensore o saranno sicuramente 12v?
7  International / Hardware / Re: misurare distanza con encoder on: April 11, 2014, 11:28:52 pm
Mmmm ok, però tale. Trasduttore è già montato su un macchinario, e ci sono 5 fili,  i quali dovrebbero essere +12, 0, segnale a, segnale b e terra. Ora se in qualche modo riesco a interfacciare arduino con tale sensore dovrei teoricamente riuscire nel mio intento, creando uno sketch che ad esempio conti gli impulsi in uno spostamento di 100mm, e da li fare le dovute proporzioni per eventuali altre misure. Giusto?
8  International / Hardware / Re: arduino e relè, aiuto on: April 11, 2014, 09:09:50 am
Un rele = 1 pin di Arduino    digitalWrite(pin,HIGH); ecciti il rele,   digitalWrite(pin,LOW);   lo disecciti
Alla pressione del tasto fai una bella sequenza tipo (si presume partiamo rele spenti):

Code:
digitalWrite(pin1,HIGH);    // li accendiamo uno dopo l'altro
delay(10000);  // 10 secondi
digitalWrite(pin2,HIGH);
delay(10000);  // 10 secondi
digitalWrite(pin3,HIGH);
....
accesi=true;
E alla fine metti una variabile "accesi" a true per sapere che hai fatto la sequenza in accensione
Se alla pressione del pulsante accesi è false fai quella sequenza, altrimenti fai sequenza inversa (metti LOW dal rele 8 al 1)
e alla fine metti accesi=false

Quello che prima devi imparare è sentire la pressione di un pulsante. Parti da un circuito semplice con pulsante/resistenza e accendi/spegni led del pin 13 in base alla pressione del pulsante

Mentre accendi la sequenza o la spegni, può essere interrotta dalla pressione del pulsante?

quei relè funzionano al contrario. Se si collega la presa fra comune e normalmente aperto per attivare la presa bisogna mettere a LOW il pin corrispondente
9  International / Hardware / misurare distanza con encoder on: April 11, 2014, 09:07:01 am
E' possibile misurare una distanza percorsa con un encoder, però non conoscendo nessuna specifica di esso?  Grazie  smiley smiley
10  International / Software / Re: porblema for e while on: March 21, 2014, 01:52:39 am
ciao.
Credo che hai risposto a me (pippo72) quotando un post di nid69ita. smiley-razz
Comunque stai attento a quello che scrivi...
Quote
...che vi spedisco una cassa di birra...
... perchè purtroppo per te non sono astemio smiley-yell smiley-yell

ciao
pippo72



Ha ha  smiley smiley smiley
11  International / Software / Re: porblema for e while on: March 20, 2014, 08:55:55 am
 smiley-cool smiley-cool datemi i vostri indirizzi che vi spedisco una cassa di birra   smiley-money smiley-money
12  International / Software / Re: porblema for on: March 20, 2014, 08:40:28 am
Code:
while (i <= npassate)
  {
    Serial.println ("passate:");
    Serial.print(i);
    lavorazioni();
    i++;
  }
}
ora non dovrebbe eseguire il ciclo "lavorazioni()" fino a quando i è uguale a npassate?
Solo se i è minore di npassate quando inizia il ciclo. Se i è già maggiore, non entra nel while.
Dove hai azzerato i ?  Secondo me nel posto errato.

Per il debug è meglio se inverti print e println:
Code:
   Serial.print ("passate:");
    Serial.println(i);
Metti questo anche prima del while così verifichi prima del while cosa succede:
Code:
   Serial.print ("prima del while:");
    Serial.println(i);

P.S. se non posti TUTTO il codice è difficile trovare un errore nel codice.  Magari l'errore non stà nel pezzo di codice che tu posti.

Non devo azzerrare i, ma x e w, ma comunque il concetto è quello, ci hai azzeccato!! Il ciclo lo richiamo dal menu, utilizzando la libreria MENWIZ
13  International / Software / Re: porblema for e while on: March 20, 2014, 08:37:45 am
Perfetto! si si il Debug l'ho già corretto come hai detto! Ora provo, grazie mille  smiley-grin smiley-mr-green smiley-grin
14  International / Software / Re: porblema for on: March 20, 2014, 05:56:55 am
ok. è un' pò lungo ma lo posto tutto!
Code:
#include <LCD.h>
#include <LiquidCrystal.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>

#define UP_BOTTON_PIN       26 //definizione pin
#define DOWN_BOTTON_PIN     28
#define LEFT_BOTTON_PIN     30
#define RIGHT_BOTTON_PIN    32
#define CONFIRM_BOTTON_PIN  34
#define ESCAPE_BOTTON_PIN   36
#define led1 53
#define led2 51
#define led3 49
#define led4 47
#define sensdx 14
#define senssx 15
#define conv 180
#define conv1 1
#define su A8
#define giu A9
#define destra A10
#define sinistra A11
#define avanti A12
#define indietro A13
#define rele7 A14
#define rele8 A15
menwiz tree;

LiquidCrystal lcd(12, 11, 6, 5, 4, 3); //creato oggetto lcd
boolean attiva = true;
boolean attiva1= true;
int statodx;
int statosx;
int x = 0;
int i = 0;
int w = 0;
int altezza = 80;
int larghezza = 300;
int npassate = 5;
int ppassate = 5;
int count = 0;
int senstras;
float tempo = conv * altezza;
float  dist = conv1 * count;
float numpas = altezza / ppassate;
int valore = 0;
boolean led=true;
void setup(){
  pinMode(destra, OUTPUT);   
  pinMode(sinistra, OUTPUT); 
  pinMode(su, OUTPUT); 
  pinMode(giu, OUTPUT); 
  pinMode(avanti, OUTPUT); 
  pinMode(indietro, OUTPUT); 
  pinMode(rele7, OUTPUT); 
  pinMode(rele8, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(senssx, INPUT);
  pinMode(sensdx, INPUT);

  digitalWrite (destra,HIGH);
  digitalWrite (sinistra,HIGH);
  digitalWrite (su,HIGH);
  digitalWrite (giu,HIGH);
  digitalWrite (avanti,HIGH);
  digitalWrite (indietro,HIGH);
  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led3,LOW);
  digitalWrite(led4,LOW);


  attachInterrupt(0,proximity,RISING);
  _menu *r,*s1,*s2;

  Serial.begin(9600);   
  tree.begin(&lcd,16,2); //declare lcd object and screen size to menwiz lib

  r=tree.addMenu(MW_ROOT,NULL,F(" TERZAGO  GLS37"));
  s1=tree.addMenu(MW_VAR,r, F("LARGHEZZA"));
  s1->addVar(MW_AUTO_INT,&larghezza,0,1000,5 );
  s1=tree.addMenu(MW_VAR,r, F("ALTEZZA"));
  s1->addVar(MW_AUTO_INT,&altezza,0,400,5 ); 
  s1=tree.addMenu(MW_VAR,r, F("NUMERO PASSATE"));
  s1->addVar(MW_AUTO_INT,&npassate,0,1000,1 );
  s1=tree.addMenu(MW_VAR,r, F("PROF. PASSATA"));
  s1->addVar(MW_AUTO_INT,&ppassate,0,400,1 );
  s1=tree.addMenu(MW_VAR,r, F("CONTROLLO DATI"));
  s1->addVar(MW_ACTION,controllo);
  s1->setBehaviour(MW_ACTION_CONFIRM,false);
  s1=tree.addMenu(MW_VAR,r, F("INIZIO CICLO"));
  s1->addVar(MW_ACTION,ciclo);
  s1->setBehaviour(MW_ACTION_CONFIRM,true);
  tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
  tree.addSplash("TERZAGO GLS37",5000);

}

void loop(){
  tree.draw();
  if (senstras==HIGH)
  {
    count++;
    senstras=LOW;
  }

  if(led == true){
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW );
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, HIGH );
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW );
    digitalWrite(led3, HIGH);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW );
    digitalWrite(led3, LOW);
    digitalWrite(led4, HIGH);
    delay(500);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW );
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, HIGH );
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW );
    digitalWrite(led3, HIGH);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW );
    digitalWrite(led3, LOW);
    digitalWrite(led4, HIGH);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW );
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    delay(500);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    delay(500);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW );
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    led =false;
  }


}
void controllo(){
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH );
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  lcd.clear();
  lcd.print("LARGHEZZA:");
  lcd.setCursor(0,1);
  lcd.print(larghezza);
  lcd.print("mm");
  delay(3000);
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW );
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  lcd.clear();
  lcd.print("ALTEZZA:");
  lcd.setCursor(0,1);
  lcd.print(altezza);
  lcd.print("mm");
  delay(3000);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH );
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  lcd.clear();
  lcd.print("N PASSATE:");
  lcd.setCursor(0,1);
  lcd.print(npassate);
  delay(3000);
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW );
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  lcd.clear();
  lcd.print("PROF PASSATA:");
  lcd.setCursor(0,1);
  lcd.print(ppassate);
  lcd.print("mm");
  delay(3000);

}

void proximity()
{
  senstras=HIGH;
}

void ciclo() {
  lcd.clear();
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH );
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);
  while (i <= npassate)
  {
    Serial.println ("passate:");
    Serial.print(i);
    lavorazioni();
    i++;
  }
}
void lavorazioni(){
  valore = floor(numpas);
  while (x <= valore)
  {
    movimento();
    Serial.print("valore x:");
    Serial.print(x);
  }
  digitalWrite(destra,HIGH);
  digitalWrite(sinistra,HIGH);
  delay(200);
  while (w <= 15){
    Serial.print("w:");
    Serial.print(w);
    traslazione(); 
  }
}
void movimento(){
  statodx = digitalRead(sensdx);
  statosx = digitalRead(senssx);
  if(statosx == HIGH && attiva == true){
    attiva = false;
    attiva1 = true;
    Serial.println("destra");
    vaidestra() ;
    x++;
  }
  if (statodx == HIGH && attiva1 == true){
    attiva1 = false;
    attiva = true;
    Serial.println("sinistra");
    vaisinistra();
    x++;
  }
}
void vaidestra(){
  Serial.print("lavorazione a destra");
  digitalWrite (destra,HIGH);
  digitalWrite (sinistra,HIGH);
  float passata = conv * ppassate;
  float tempo = conv1*altezza;
  float  dist = count*conv;
  digitalWrite (su,LOW);
  digitalWrite (giu,HIGH);
  delay(passata);
  digitalWrite(su,HIGH);
  delay(200);
  digitalWrite (destra,LOW);
  digitalWrite (sinistra,HIGH);
}
void vaisinistra(){
  Serial.print ("lavorazione a sinistra");
  float passata = conv * ppassate;
  digitalWrite (destra,HIGH);
  digitalWrite (sinistra,HIGH);
  float tempo = conv1*altezza;
  float  dist = count*conv;
  digitalWrite (su,LOW);
  digitalWrite (giu,HIGH);
  delay(passata);
  digitalWrite(su,HIGH);
  delay(200);
  digitalWrite (destra,LOW);
  digitalWrite (sinistra,HIGH);

}

void traslazione(){
  Serial.println("traslazione");
  digitalWrite(avanti,LOW);
  digitalWrite(indietro,HIGH);
  w++;
}

l' ho azzerato all' inizio
15  International / Software / Re: porblema for on: March 20, 2014, 05:36:16 am
si si. A inizio sketch ho messo var i = 0. Comunque il contatore funziona, da seriale lo vedo. solamente che invece di fare i volte il ciclo lavorazioni aumenta solamente il contatore
Pages: [1] 2 3