Loading...
  Show Posts
Pages: [1] 2 3 ... 56
1  International / Hardware / Re: Sensore LM35 ad output sinusoidale?!? on: April 27, 2013, 03:14:21 am
Nemmeno io sto capendo niente. :-)
Comunque è vero che quella di pullup le falsa, ma mettere il pin a massa no; e lavorare su un pin "casuale", senza cioè sapere come è impostato, non è "serio"; magari la arduino lo preimposta di per sè a LOW, ma che ne so?

il discorso che fai non ha fondamenti, di default i pin sono impostati come input ad alta impedenza, che non vuole assolutamente dire che sono a massa

Comunque mi è venuto un altro dubbio: ma analogRead(5) e analogRead(A5) sono la stessa cosa o no?
si
Cioè, se metto un 5 in analogRead() o in digitalRead(), l'IDE capisce da solo che deve associarle lo stesso numero a pin diversi?
si
2  International / Hardware / Re: Sensore LM35 ad output sinusoidale?!? on: April 26, 2013, 05:16:24 pm
sinceramente non sto capendo nulla di quello che fai, di quello che va e di quello che non va  smiley-sweat
comunque ribadisco che secondo me una resistenza di pull-up su misure analogiche falsa le letture
3  International / Hardware / Re: Sensore LM35 ad output sinusoidale?!? on: April 26, 2013, 04:37:39 pm
hai provato a togliete quella riga dove abiliti la resistenza di pull-up?
4  International / Hardware / Re: Sensore LM35 ad output sinusoidale?!? on: April 26, 2013, 03:23:38 pm
la resistenza di pull-up è utile per segnali digitali, con segnali analogici rischi di falsare la misura secondo me
5  International / Software / Re: Avvio di 3 motori. on: April 26, 2013, 01:24:37 pm
eheh correggere il tuo codice mi risulta più complicato che ripensarlo perchè il tuo non è stato pensato per fare questa modifica... non ho capito se i pulsanti sono pulsanti oppure restano premuti, se restano premuti è tutto più facile smiley

comunque io l'avevo pensato così
Code:
#define SB1 2
#define SB2 3
#define M1 4
#define M2 5
#define M3 6

const byte T[3]={60,45,90};
byte m=0;
unsigned long time=0;

void setup()
{
 pinMode(SB1,INPUT); //input ON
 pinMode(SB2,INPUT); //input OFF
 pinMode(M1,OUTPUT); //MOTOR 1
 pinMode(M2,OUTPUT); //MOTOR 2
 pinMode(M3,OUTPUT); //MOTOR 3
}

void loop()
{
 if(m>0 && digitalRead(SB1)) m=0;
 
 else if(m==0 && digitalRead(SB2)) m=1;
 
 else if(m>0 && millis()-time>=T[m-1]*100)
 {
  m=m==3?1:m+1;
  time=millis();
 }
 
 digitalWrite(M1,m==1);
 digitalWrite(M2,m==2);
 digitalWrite(M3,m==3);
}
6  International / Software / Re: Avvio di 3 motori. on: April 26, 2013, 11:10:32 am
per quello che vuoi fare tu è fortemente sconsigliato l'utilizzo della funzione delay perchè blocca l'esecuzione del programma e non c'è modo di interromperla prima della sua fine
nel mio codice ho usato la funzione millis (http://arduino.cc/en/Reference/Millis) che ti permette di tenere sotto controllo il tempo
questa funzione ti restituisce il numero di millisecondi trascorsi da quando è iniziata l'esecuzione del programma
quindi per fare un delay di 300 puoi scrivere così:
Code:
unsigned long time=millis();
while(millis()-time<=4000)
{
}
poi se in quei 4000ms vuoi controllare che il tasto di stop venga premuto fai così:
Code:
unsigned long time=millis();
while(millis()-time<=4000)
{
 if(digitalRead(SB2)==HIGH) return;
}
7  International / Hardware / Re: Sensore LM35 ad output sinusoidale?!? on: April 26, 2013, 11:00:34 am
per prima cosa collega tutto per bene, prendi un tester e verifica che ci sia una variazione di tensione proporzionale alla temperatura

poi ricollega l'arduino e passiamo al codice, quello che hai postato tu non ha molto senso... perchè scrivi " digitalWrite(tempPin,HIGH); " ? 
8  International / Hardware / Re: Sensore LM35 ad output sinusoidale?!? on: April 26, 2013, 10:47:41 am
per dire che oscilla sinusoidalmente hai guardato con un oscilloscopio?
hai collegato direttamente l'uscita all'ingresso analogico o c'è qualche circuito di amplificazione?
se lo tocchi con le mani cambiando la temperatura cambia qualcosa sull'uscita?
9  International / Hardware / Re: ridurre disturbi esterni su magnetometro CMPS03? on: April 26, 2013, 10:42:11 am
ho appena finito di calibrarla, ora sembra andare molto meglio! smiley-grin
grazie a tutti per l'aiuto! smiley-wink chissà come ha fatto a "scalibrarsi"... smiley-roll-sweat
10  International / Hardware / Re: ridurre disturbi esterni su magnetometro CMPS03? on: April 26, 2013, 10:19:32 am
ahn ok ok grazie mille smiley-wink
Però leggo che devi scriverlo 4 volte per azzerare tutte le 4 direzioni.
si, quello pensavo di gestirlo con la seriale: posiziono per bene il sensore e poi gli dico all'arduino di fare quelle operazioni
11  International / Hardware / Re: ridurre disturbi esterni su magnetometro CMPS03? on: April 26, 2013, 09:48:13 am
dopo un'eternità, finalmente ora mi trovo a ricalibrarla...
nel datasheet (http://www.robot-electronics.co.uk/htm/cmps3tech.htm) scrivono così:
Quote
Before calibrating the compass, you must know exactly which direction is North, East, South and West. Remember these are the magnet poles, not the geographic poles. Don't guess at it. Get a magnetic needle compass and check it. When calibrating, make sure the compass is horizontal at all times with components upwards, don't tilt it. Keep all magnetic and ferrous materials away from the compass during calibration - including your wristwatch.

I2C Method
To calibrate using the I2C bus, you only have to write 255 (0xff) to register 15, once for each of the four major compass points North, East, South and West. The 255 is cleared internally automatically after each point is calibrated. The compass points can be set in any order, but all four points must be calibrated. For example
1. Set the compass module flat, pointing North. Write 255 to register 15, Calibrating pin (pin5) goes low.
2. Set the compass module flat, pointing East. Write 255 to register 15,
3. Set the compass module flat, pointing South. Write 255 to register 15,
4. Set the compass module flat, pointing West. Write 255 to register 15, Calibrating pin (pin5) goes high.
That's it.

non ho molta pratica con l'I2C, scrivere 255 sul registro 15 significa fare questo? dove specifico il registro su cui scrivere?  smiley-neutral
Code:
Wire.beginTransmission(0x60); //indirizzo del CMPS03
Wire.write(255);
Wire.endTransmission();
12  International / Hardware / Re: Usare Joystick come pulsanti di navigazione on: April 26, 2013, 07:57:57 am
di niente, la libreria la proverò se ho tempo smiley-wink ma avevo già fatto una cosa simile per provare a fare il controllo remoto del mio robot e mi piace di più usare le cose che faccio io smiley
13  International / Hardware / Re: Usare Joystick come pulsanti di navigazione on: April 25, 2013, 06:48:40 pm
non conosco quella libreria, ma secondo me se usi la funzione analogRead e ti leggi il valore dei 2 potenziometri ti diverti di più  e hai un maggior controllo di ciò che succede smiley-razz

comunque leggendo il codice vedo un errore, così dovrebbe funzionare:
Code:
#include "JoystickController.h"
JoystickController controller;

void setup(){
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}
void loop(){
  controller.update();
int direct = controller.getDirection();

switch (direct){
        case  JoystickController::DIRECTION_UP:
        Serial.println("UP");
        break;

        case  JoystickController::DIRECTION_DOWN:
        Serial.println("DOWN");
        break;
    }
       if(direct==JoystickController::DIRECTION_UP){
       digitalWrite(13,HIGH);}
    
       if(direct==JoystickController::DIRECTION_DOWN){
       digitalWrite(13,LOW);}
       delay(1000);
    }
la variabile che tu devi verificare è direct (come hai fatto nello switch), il resto sono valori fissi
14  International / Hardware / Re: Consiglio su batteria per arduino on: April 25, 2013, 06:40:53 pm
Ora, siccome l'ali da 5.6 non riesce ad alimentare arduino e volevo evitare un secondo ali avevo optato per una batteria da 9volt di uso comune,
però per far funzionanre tutto sono costretto a staccare 2 pin per i led.
non ho capito perchè devi fare quell'operazione, non hai abbastanza corrente? cosa non funziona?
comunque l'arduino ha un regolatore di tensione da 5V a bordo e che regola anche la corrente massima erogata, se metti 18V al posto di 9V è peggio perchè il regolatore di tensione si trova a dissipare più energia per portare a 5V...
secondo me con una batteria da 9V dovrebbe andare bene, spiega meglio quale è il tuo problema
15  International / Software / Re: Avvio di 3 motori. on: April 25, 2013, 06:25:50 pm
se i relè sono con la bobina ti serve comunque un circuito con i transistor
comunque per la parte software mi pare che tu abbia le idee abbastanza chiare sul funzionamento
se mi dici cosa non ti è chiaro provo a spiegartelo e proviamo a trovare una soluzione insieme, perchè se te lo faccio io poi tu impari poco o niente

Quote
in pratica devo fare che il 1°motore si accende per un certo tempo poi si spegne, e si accende il 2°motore per un certo tempo poi si spegne, e si accende il 3°motore per un certo tempo poi si spegne e il ciclo non rincomincia finché non premo il pulsante per riavviare il ciclo, come dicevo devo mettere anche un pulsante per arrestare il ciclo in qualsiasi punto e riavviarlo con quello di avvio

leggendo questo io farei così:
Code:
#define T 3000 // definisco periodo di durata per
               //ogni motore 3000ms = 3s

byte m=0;
unsigned long time=0;

void setup()
{
 pinMode(2,INPUT); //input ON
 pinMode(3,INPUT); //input OFF
 pinMode(4,OUTPUT); //MOTOR 1
 pinMode(5,OUTPUT); //MOTOR 2
 pinMode(6,OUTPUT); //MOTOR 3
}

void loop()
{
 if(m>0 && digitalRead(3)) m=0;
 
 else if(m==0 && digitalRead(2)) m=1;
 
 else if(m>0 && millis()-time>=T)
 {
  m=m==3?1:m+1;
  time=millis();
 }
 
 digitalWrite(4,m==1);
 digitalWrite(5,m==2);
 digitalWrite(6,m==3);
}
Pages: [1] 2 3 ... 56