Show Posts
Pages: [1] 2
1  International / Hardware / Re: Comandare barre led (led strip) on: April 01, 2014, 06:36:40 am
confermo 0,25 A
2  International / Hardware / Re: Comandare barre led (led strip) on: March 31, 2014, 08:46:07 am
Ciao, consumano 3 w e funzionano a 12 v quindi dovrebbero assorbire 0.25 A ... comunque verifico ! grazie per l'interessamento
3  International / Hardware / Comandare barre led (led strip) on: March 30, 2014, 02:39:41 pm
Ciao a tutti, ringrazio anticipatamente per l'attenzione

il mio "problema" è questo: dovrei comandare 6 barre led con arduino che lavorano a 12 v, mi sono già informato sull'argomento e in passato ho utilizzato un regolatore di tensione (7812) per comandare un motore, ora mi chiedevo con un solo transistor riesco a gestire 6 barre led ? ho visto qualche post inglese dove si usa questo:

http://www.learn-c.com/tip120.pdf

oppure questo:

http://www.st.com/web/en/resource/technical/document/datasheet/CD00002501.pdf

voi che dite ? , che parametri devo prendere in considerazione ?

...sulla parte software non credo di aver problemi, inoltre per comandare i led posso solo utilizzare le uscite pwm di arduino ?

....grazie tante per l'attenzione, so che chiedo molto ..aspetto vostre risposte  smiley-wink
4  International / Software / Aiuto ! Due tasti per On e Off ?? on: June 07, 2013, 11:52:33 am
salve a tutti , ho terminato il mio progetto, ora vorrei inserire due tasti.. uno che faccia partire il programma e l'altro che lo stoppi,

mi spiego meglio ...ho costruito un robot adesso vorrei usare due tasti per spegnerlo e accenderlo..non riesco a trovare il modo qualcuno può darmi una mano con il codice ??

Grazie in anticipo !!

Code:
const byte led1 = 13;
const byte led2 = 12;
const int On = 3; // tasto on
const int Off = 5; // tasto off
int onState = 0;  //variabile
int offState = 0; //variabile
int variabile =0; // variabile


void setup()

{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(On, INPUT);
  pinMode(Off, INPUT);
}

void loop()
{
  onState = digitalRead(On);
  offState = digitalRead(Off);
 
  if (onState == HIGH)

  {
   variabile = 1;
  }

  if (offState == HIGH);

  {
   variabile = 0;
  }

  if (variabile = 1)

  {
  digitalWrite(led1, HIGH);
  }

}


ovviamente al posto di far accendere il led faccio partire il programma ..
5  International / Software / Robot evita ostacoli on: June 05, 2013, 04:18:51 pm
Ciao a tutti !

sono riuscito a completare il mio robot evita ostacoli, per lo meno fino a quando il robot non si è andato a schiantare !!

qui posto il video per farvi capire meglio, comunque se arriva in obliquo su una superficie piatta non si ferma, al 99% il sensore non riceve il segnale di ritorno o sbaglio ??

se avete qualche suggerimento, ad esempio modifiche o aggiungere qualcosa fatemi sapere !

Questo è il video: http://youtu.be/xtC4MWY_Sqg


questo è il codice:
Code:
#include <Servo.h>
const byte MOTOR_in1 = 11;      // ingresso in1 - motore DX       
const byte MOTOR_in2 = 10;      // ingresso in2 - motore DX
const byte MOTOR_in3 = 9;       // ingresso in3 - motore SX
const byte MOTOR_in4 = 6;       // ingresso in4 - motore SX
const byte pin_segnale = 8; // pin sensore collegato ad arduino
const byte led1 = 13;
const byte led2 = 12;
const byte decelera = 0;
unsigned long leftDistance;
unsigned long rightDistance;
unsigned long frontDistance;
Servo servo;

void setup()

{
 
  delay(1000);
  Serial.begin(9600);
  servo.attach(2);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(MOTOR_in1, OUTPUT);       // imposta i pin digitali come output
  pinMode(MOTOR_in2, OUTPUT);       // imposta i pin digitali come output
  pinMode(MOTOR_in3, OUTPUT);       // imposta i pin digitali come output
  pinMode(MOTOR_in4, OUTPUT);       // imposta i pin digitali come output
 
}

void loop()

{
 
  servo.write(85);
  delay(500);
  frontDistance = Srf(pin_segnale);
  if (frontDistance>=30)
  {
    Forward();
  }
 
  else
 
  {
    Arrest();
    if (frontDistance<=30)
  {
    compareDistance();
  }
 
}



   

}


void compareDistance()

{
  servo.write(0);
  delay(500);
  rightDistance = Srf(pin_segnale);
  delay(500);
  servo.write(175);
  delay(700);
  leftDistance = Srf(pin_segnale);
  delay(500);
  servo.write(85);
  delay(100);
 
  if (rightDistance<=25 && leftDistance<=25)
  {
    Backward();
    delay(1050);
    Arrest();
}
 
 else
 {
   FreeRoad();
   
 }
}

void FreeRoad()

{
 
  if (leftDistance>rightDistance)
  {
    Turnleft();
  }
 
  else
  {
    Turnright(); //turn 180 degrees
   
  }
 
}


 void Forward() {
 
  digitalWrite(MOTOR_in1, LOW);   // in1
  digitalWrite(MOTOR_in2, HIGH);  // in2
  digitalWrite(MOTOR_in3, LOW);   // in1
  digitalWrite(MOTOR_in4, HIGH);
  //analogWrite(enablePinA, 255);
  //analogWrite(enablePinB, 255);
}
 
 void Backward() {
 
  digitalWrite(MOTOR_in1, HIGH);   // in1
  digitalWrite(MOTOR_in2, LOW);  // in2
  digitalWrite(MOTOR_in3, LOW);   // in1
  digitalWrite(MOTOR_in4, HIGH);
   
 }
 
 void Arrest() {
 
  digitalWrite(MOTOR_in1, LOW);   // in1
  digitalWrite(MOTOR_in2, LOW);  // in2
  digitalWrite(MOTOR_in3, LOW);   // in1
  digitalWrite(MOTOR_in4, LOW);
 
   }
 
 
 void Turnleft() {
 
  digitalWrite(MOTOR_in3, LOW);   
  digitalWrite(MOTOR_in4, HIGH);
  delay(1200);
  digitalWrite(MOTOR_in3, LOW);   
  digitalWrite(MOTOR_in4, LOW);
 
  //delay(500);
  //analogWrite(enablePinA, 255);
  //analogWrite(enablePinB, 0);
 
 }
 
 void Turnright() {
   
  digitalWrite(MOTOR_in1, LOW);   
  digitalWrite(MOTOR_in2, HIGH);
  delay(1200);
  digitalWrite(MOTOR_in1, LOW);   
  digitalWrite(MOTOR_in2, LOW);
 
  //delay(500);
  //analogWrite(enablePinA, 0);
  //analogWrite(enablePinB, 0);
 
 }
 
 
 unsigned long Srf(byte pin) {
  pinMode(pin, OUTPUT);
  digitalWrite(pin, LOW);      // viene posto a LOW pin, per 2 microsecondi prima di inviare un breve impulso di trigger
  delayMicroseconds(2); 
  digitalWrite(pin, HIGH);     // invia un impulso di trigger
  delayMicroseconds(10);               // di 10 microsecondi
  digitalWrite(pin, LOW);      // pone il pin al LOW in attesa che l'impulso torni indietro
  pinMode(pin, INPUT);
  unsigned long durata = pulseIn(pin, HIGH); // legge l'eco dell'impulso emesso in microsecondi
  unsigned long distanza = durata/60;                // divide la durata per 58 per ottenere la distanza in cm
  Serial.println(distanza);            // stampa sul Serial Monitor il valore della distanza
  return distanza;
 
  } 
6  International / Software / Re: Software per comparare Distanza con SRF05 on: May 08, 2013, 01:05:13 pm
Grazie PaoloP !! Funziona !! Perfetto

Mi potresti spiegare dov'è ho sbagliato oltre a return ??
7  International / Software / Re: Software per comparare Distanza con SRF05 on: May 07, 2013, 10:19:46 am
Ok grazie, provo subito ...ho provveduto a modificare il post..grazie per il suggerimento
8  International / Software / Software per comparare Distanza con SRF05 on: May 07, 2013, 07:42:48 am
Ciao a tutti ! vi spiego il mio problema:

Ho un servo motore, un sensore ultrasuoni (SRF05) e due led; In pratica il sensore è posizionato su un servo motore, il mio programma deve comparare la distanza che rileva a destra e quella che rileva a sinistra e a secondo di quale sia maggiore o minore accendere uno dei due led, il mio progetto è quello di un robot, quindi dopo sostituirò il programma per accendere il led con quello per far avviare le ruote.

il problema è che lampeggia solo un led in continuazione

questo è il codice:

Code:
#include <Servo.h> //libreria servo motore
Servo servo; //crea l’oggetto di tipo Servo,servo sarà l’oggetto su cui opero;
int durata;           //durata dell'impulso
int distanza;        // distanza oggetto
int pin_segnale = 8; // pin sensore collegato ad arduino
int leftDistance, rightDistance;
int led1 = 13;
int led2 = 12;

void setup()

{

  Serial.begin(9600);
  servo.attach(2); //piedino di comando del servo collegato al piedino 2 di arduino
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  
}

void loop()
{


    servo.write(0);
    delay(500);
    rightDistance = Srf();
    delay(500);
    servo.write(180);
    delay(700);
    leftDistance = Srf();
    delay(500);
    servo.write(90);
    delay(100);
  
  if (leftDistance>rightDistance)
  {
    sinistra();
    
  }
 
   else
  {
    destra(); //turn 180 degrees
  }
}

long Srf()

{
  
  pinMode(pin_segnale, OUTPUT);
  digitalWrite(pin_segnale, LOW);      // viene posto a LOW pin, per 2 microsecondi
                                       // prima di inviare un breve impulso di trigger
  delayMicroseconds(2);  
  digitalWrite(pin_segnale, HIGH);     // invia un impulso di trigger
  delayMicroseconds(10);               // di 10 microsecondi
  digitalWrite(pin_segnale, LOW);      // pone il pin al LOW in attesa che l'impulso torni indietro
  pinMode(pin_segnale, INPUT);
  durata = pulseIn(pin_segnale, HIGH); // legge l'eco dell'impulso emesso in microsecondi
  distanza = durata/130;                // divide la durata per 58 per ottenere la distanza in cm
  Serial.println(distanza);            // stampa sul Serial Monitor il valore della distanza
  
  
}

void sinistra()

{
 digitalWrite(led1, HIGH);
 delay(1000);
 digitalWrite(led1, LOW);
}



void destra()
{
 
 digitalWrite(led2, HIGH);
 delay(1000);
 digitalWrite(led2, LOW);
  
}

..Allego anche il file .ino

e un video di quello che succede... http://www.youtube.com/watch?v=sSckHX-9F-0&feature=youtu.be

Attendo risposte grazie
9  International / Software / Re: Decelerazione motore on: April 18, 2013, 09:14:36 am
In pratica sto creando alcuni sotto programmi nominandoli in questo modo: void decelerazione() , void avanti(); ecc.

e in seguito li vorrei richiamare tutti nel void loop ()

è possibile procedere in questo modo ??

ad esempio (a parole non ho ancora fatto il codice per questo caso): se il sensore (sensore ad ultrasuoni) rileva una certa distanza inizia a decelerare e quindi si ferma, a quel punto gira a sinistra e a destra e fa una comparazione tra quale delle due direzioni non vi siano oggetti e quindi poi il robot deve ripartire, pensavo di far tutto questo creando dei sottoprogrammi e mettere poi tutto assieme

Grazie per le risposte !
10  International / Software / Re: Decelerazione motore on: April 18, 2013, 01:44:27 am
OK però la funzione decelera me la ripete all'infinito visto che è un ciclo for o mi sto sbagliando ??
11  International / Software / Re: DECELERAZIONE MOTORE on: April 17, 2013, 02:27:19 pm
beh l'idea sarebbe che quando il sensore ad ultra suoni individua l'oggetto ad una certa distanza inizi a decelerare e quindi a fermarsi...quindi il pulsante è da escludere, ho letto che per terminare il ciclo for bisogna aggiungere al codice: "break;" ma non funziona

Alternative ??
12  International / Software / Decelerazione motore on: April 17, 2013, 12:53:33 pm
ciao a tutti sto progettando un robot che evita ostacoli comandato da due motori

ora sto cercando di creare un loop per la decelerazione in modo tale da evitare che i due motori si blocchino in modo brusco rischiando di rompere gli ingranaggi che tra l'altro sono anche di plastica, comunque il mio problema è sono riuscito a creare questo loop con un ciclo for ma non so come fermare il ciclo..il codice è il seguente:

Code:
void decelerate() {
 
  digitalWrite(MOTOR_in1, LOW);   // motore sinistra gira avanti
  digitalWrite(MOTOR_in2, HIGH);  
  digitalWrite(MOTOR_in3, HIGH);   // motore destro gira avanti
  digitalWrite(MOTOR_in4, LOW);  
 
 for (valoreFade = 255; valoreFade > 0; valoreFade--) // decelerazione motore
    
     { analogWrite(enablePinA, valoreFade);
       analogWrite(enablePinB, valoreFade);
       delay(10);
      
   }

}

il void decelerate lo richiamo nel mio void loop, funzionare funziona ma continua a farlo e io voglio che lo faccia una volta sola

Grazie in anticipo !
13  International / Software / Programma per Comandare un robot on: March 31, 2013, 10:11:06 am
Salve a tutti, Ho trovato questo progetto su internet e mi è sembrato molto interessante.. qui vi posto il link:

http://www.instructables.com/id/How-To-Make-an-Obstacle-Avoiding-Arduino-Robot/

Mi sembra di aver capito il codice l'unica cosa che non mi torna sono queste stringhe di comando:

const int leftPhoto = 1;
const int rightPhoto = 2;
const int irPin = 0;  //Sharp infrared sensor pin
const int minCliff = 350;
const int maxCliff = 470; //thresholds for cliff detection

ecco non riesco a capire a cosa si riferisce questo codice, inoltre nel progetto un sensore ad infrarossi non è stato nemmeno citato, possibile che sia stato inserito dopo ? e in tal caso dove ?

..comunque ho allegato il codice completo e il link anche in formato pdf

http://www.mediafire.com/view/?0i89he57f4k2ji3

Grazie in anticipo a tutta la comunity, aspetto con ansia
14  Using Arduino / Audio / Update ATmega 8U2 for MIDI on: February 11, 2013, 03:25:36 pm
http://arduino.cc/en/Hacking/DFUProgramming8U2

in this guide there is how updating an arduino uno , i have an arduino rev 2, what changes ?

in the first picture there is a resistance ...but in arduino rev 2 there isn't the 2 holes where's placed the resistence

another question is ... once that i update the arduno's firmware the programming with arduino change ??

where i buy a midi connector ?

Thanks, Sorry for my english I'm italian !

15  Using Arduino / Audio / Re: Make a Drum Machine on: November 19, 2012, 06:54:06 am
South England

I want to use flstudio(music software) with arduino...the pc must relieve arduino as a midi device...for example: I want to play a musical keyboard and the computer receives the notes with fl studio.
This is the video:



It's only that i have 8 pads instead of a musical keyboard

I hope you understand what i want to do

sorry for my english!
Pages: [1] 2