Go Down

Topic: help me again !! (Read 512 times) previous topic - next topic

gpanamerica

Milllllle grazie ad Uwe che e' stato cosi' solerte nel rispondermi 

MI sono espresso male...ho un motoriduttore con spazzole ed encoder a bordo che vorrei pilotare contando i giri tramite l'effetto Hall di cui dispone

manca ancora tutta la parte dell'encoder....ma quello e' un passo successivo...devo prima capire se serve uno shield o cos'altro....

Dunque, ti elenco lo schema delle connessioni:

Arduino pin 2 = connesso ad un cavo del pulsante, l'altro cavo a GND
Arduino pin 4 = connesso ad un cavo del sensore porta, l'altro cavo a GND
Arduino pin 6 = connesso al pin DIR della Tank 3A HP
Arduino pin 7 = connesso ad un piedino di un LED verde, l'altro piedino a GND
Arduino pin 9 = connesso al pin PWM della Tank
Arduino pin 13 = connesso ad un piedino di un LED rosso, l'altro piedino a GND

il codice e' questo:


//attribuzione dei pin
int pulsante = 2;
int sensore_porta = 4;
int dirPin = 6;
int led_verde = 7;
int motorPin = 9;
int led_rosso = 13;

//dichiarazioni delle variabili

int status_porta = 0;

void setup() {
 
//partendo da porta chiusa
pinMode(sensore_porta, INPUT);
pinMode(pulsante, INPUT);
pinMode(led_verde, OUTPUT);
pinMode(led_rosso, OUTPUT);
digitalWrite(led_rosso, HIGH);
pinMode(dirPin, OUTPUT);

//attivo la seriale per monitorare il tutto
  Serial.begin(9600);

}




void loop() {

  if (status_porta == 0){
  if (digitalRead(sensore_porta) == HIGH  && digitalRead(pulsante) == HIGH) {
 
  Serial.print(" apro la porta ");
digitalWrite(dirPin, LOW);
delay(1000);


  Serial.print(" apro primo DX ");
analogWrite(motorPin, 255);
delay(1000);


  Serial.print(" apro secondo DX ");
analogWrite(motorPin, 255);
delay(1000);

//segnalo la porta aperta
  Serial.print(" ....fermo a porta aperta.... ");
digitalWrite(led_verde, HIGH);
digitalWrite(led_rosso, LOW);

//spengo il motore
analogWrite(motorPin, 0);

//inverto la direzione del motore
digitalWrite(dirPin, HIGH);

//comunico che la porta e' aperta e gli do' 10 secondi..
status_porta = 1;
delay(10000);

  }
}



/////////////////////////////////////////
//ciclo di chiusura
///////////////////////////////////////
    if (status_porta == 1){
  if (digitalRead(sensore_porta) == HIGH  && digitalRead(led_verde) == HIGH)
{

  Serial.print(" chiudo primo SX ");
analogWrite(motorPin, 255);
delay(1000);


  Serial.print(" chiudo secondo SX ");   
analogWrite(motorPin, 255);
delay(1000);

//spengo il motore
analogWrite(motorPin, 0);
delay(1000);

//segnalo porta chiusa
  Serial.print(" ....fermo a porta chiusa.... ");
digitalWrite(led_verde, LOW);
digitalWrite(led_rosso, HIGH);


   }
  }
}

spero che sia abbastanza chiaro....
di fatto alla fine non funziona niente....non credo sia il codice, piuttosto l'hardware mal configurato....magari mancano delle resistenze/condensatori su qualche pin....sono una frana in elettronica.....

il link del datasheet del tank e'

http://www.droids.it/cmsvb4/content.php?174-990.009-Tank-3A-HP-Motor-controller-Guida-Utente

quello del motoriduttore

http://www.robot-italy.com/product_info.php?cPath=8_93&products_id=480

help me again  tank you together

Go Up