Pages: [1] 2   Go Down
Author Topic: Pin analogici 6 e 7 su ArduinoBT: come funzionano?  (Read 1054 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, sono nuovo del forum:
Volevo sapere come usare i pin analogici 6 e 7 dell'ArduinoBT come output da 5V;
Io ho usato analogWrite(A6, 255), ma il led connesso al pin non si accende, come mai?
Qua di seguito posto il codice del mio programma:

int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led8 = 8;
int led9 = 9;
int led10 = 10;
int led11 = 11;
int led12 = 12;
int led13 = 13;
int led14 = 14;
int led15 = 15;
int led16 = 16;
int led17 = 17;
int led18 = 18;
int led19 = 19;
int led20 = A6;
int led21 = A7;
void setup(){
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led10, OUTPUT);
  pinMode(led11, OUTPUT);
  pinMode(led12, OUTPUT);
  pinMode(led13, OUTPUT);
  pinMode(led14, OUTPUT);
  pinMode(led15, OUTPUT);
  pinMode(led16, OUTPUT);
  pinMode(led17, OUTPUT);
  pinMode(led18, OUTPUT);
  pinMode(led19, OUTPUT);
  pinMode(led20, OUTPUT);
  pinMode(led21, OUTPUT);
  Serial.begin(115200);
}
void loop(){
  byte rec = 0;
  if(Serial.available()){
    rec = Serial.read();
  }
  switch(rec){
    case 2:
      digitalWrite(led2, HIGH);
    break;
    case 3:
      digitalWrite(led3, HIGH);
    break;
    case 4:
      digitalWrite(led4, HIGH);
    break;
    case 5:
      digitalWrite(led5, HIGH);
    break;
    case 6:
      digitalWrite(led6, HIGH);
    break;
    case 8:
      digitalWrite(led8, HIGH);
    break;
    case 9:
      digitalWrite(led9, HIGH);
    break;
    case 10:
      digitalWrite(led10, HIGH);
    break;
    case 11:
      digitalWrite(led11, HIGH);
    break;
    case 12:
      digitalWrite(led12, HIGH);
    break;
    case 13:
      digitalWrite(led13, HIGH);
    break;
    case 14:
      digitalWrite(led14, HIGH);
    break;
    case 15:
      digitalWrite(led15, HIGH);
    break;
    case 16:
      digitalWrite(led16, HIGH);
    break;
    case 17:
      digitalWrite(led17, HIGH);
    break;
    case 18:
      digitalWrite(led18, HIGH);
    break;
    case 19:
      digitalWrite(led19, HIGH);
    break;
    case 20:
      analogWrite(led20, 255);   
    break;
    case 21:
      analogWrite(led21, 255);
    break;
    case 25:
      digitalWrite(led2, LOW);
      digitalWrite(led3, LOW);
      digitalWrite(led4, LOW);
      digitalWrite(led5, LOW);
      digitalWrite(led6, LOW);
      digitalWrite(led8, LOW);
      digitalWrite(led9, LOW);
      digitalWrite(led10, LOW);
      digitalWrite(led11, LOW);
      digitalWrite(led12, LOW);
      digitalWrite(led13, LOW);
      digitalWrite(led14, LOW);
      digitalWrite(led15, LOW);
      digitalWrite(led16, LOW);
      digitalWrite(led17, LOW);
      digitalWrite(led18, LOW);
      digitalWrite(led19, LOW);
      analogWrite(led20, 0);
      analogWrite(led21, 0);
      break;
  }
}
Grazie mille!
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10105
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

perchè facendo
Code:
pinMode(led20, OUTPUT);
  pinMode(led21, OUTPUT);

hai detto che vuoi usare quei PIN come digitali, e quindi l'analogWrite() non funziona più.
Puoi usare i pin analogici come digitali ma NON viceversa. E usa i cicli maledizione! smiley-mr-green
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E devo mettere qualcos'altro al posto di pinMode() o non devo mettere niente? smiley-confuse
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10105
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se vuoi usarli in analogico non mettere niente
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ed è lo stesso se indico le porte dei pin analogici 6 e 7 con A6 ed A7 o con 20 o 21?
così:
analogWrite(20, 0);
analogWrite(21, 0);
o così:
analogWrite(A6, 0);
analogWrite(A7, 0);
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10105
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sì, son tutte etichette equivalenti... ma crei solo confusione. Di solito scelto una convenzione si continua ad usare quella
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il codice così è giusto allora?
(con i cicli  smiley-mr-green):

void setup(){
  for(int i = 0; i > 21; i++){
    if((i != 7) && (i != 0) && (i != 1) && (i != 20) &&(i != 21)){
      pinMode(i, OUTPUT);
    }
  }
  Serial.begin(115200);
}
void loop(){
  byte rec = 0;
  if(Serial.available()){
    rec = Serial.read();
  }
  if((rec != 7) && (rec != 0) && (rec != 1) && (rec != 20) &&(rec != 21) && (rec != 25)){
    digitalWrite(rec, HIGH); 
  }
  else if((rec == 20) || (rec == 21)){
    analogWrite(rec, 255); 
  }
  else if(rec == 25){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    digitalWrite(14, LOW);
    digitalWrite(15, LOW);
    digitalWrite(16, LOW);
    digitalWrite(17, LOW);
    digitalWrite(18, LOW);
    digitalWrite(19, LOW);
    analogWrite(20, 0);
    analogWrite(21, 0);

  }
}
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10105
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si a colpo d'occhio. stessa cosa la puoi fare anche per il segnale low... da 50 righe di codice ne hai 10, molto comodo no? se poi anche i pin analogici li usi in digitale puoi evitarti lo sbatti di fare l'if per l'analogRead  smiley
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20195
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusate state girando intorno al problema.
Il analogWrite funziona solo su uscite PWM non su entrate analogiche.
I pin A6 e A7 per farli funzionare come entrate/uscite digitali devi definirli prima con pinMode. e poi mettere HIGH o LOW con digitalWrite.

Non sono sicuro al 100% che i due pin funzionino come pin digitali. 

Quel codice che hai incluso accende solo un LED alla volta.
Sappi che ogni uscita puó dare 40mA ma in totale la somma delle correnti puó essere solo 200mA.

Andryy suppongo che hai collegato una resistenza in serie a ciascun LED.

Ciao Uwe

« Last Edit: February 06, 2011, 06:11:21 pm by uwefed » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Concordo con Uwe: un pin analogico è "analogico" solo in ingresso: in uscita diventa un pin digitale a tutti gli effetti.
http://arduino.cc/en/Reference/DigitalWrite
"The analog input pins can be used as digital pins, referred to as A0, A1, etc."

http://arduino.cc/en/Reference/AnalogWrite
"The analogWrite function has nothing whatsoever to do with the analog pins or the analogRead function."
Logged


0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10105
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

confermo, non me ne ero accorto  smiley
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Già, a quanto pare hai ragione perchè se li uso some analogici non vanno, amenochè io non abbia sbagliato il mio programma:
non spegne i led ed i pin A6 ed A7 non si accendono manco....
Lo posto qua:
void setup(){
  Serial.begin(115200);
}
void loop(){
  byte rec = 0;
  if(Serial.available()){
    rec = Serial.read();
  }
  if((rec != 7) && (rec != 0) && (rec != 1) && (rec != 25)){
    analogWrite(rec, 255); 
  }
  else if(rec == 25){
    for(int j = 0; j > 21; j++){
      if((j != 7) && (j != 0) && (j != 1)){
        analogWrite(j, 0);
      }
    }
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cioè uwe, come dovrei fare per accendere i led nei pin A6 ed A7, dato che non posso accenderli con digitalWrite()?
Non capisco...
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10105
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sì che puoi usarli come digitali.
lo dichiari con il pinMode() e poi li usi con digitalWrite (o digitlRead se li usi come input)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma sul sito dice che non possono essere usati come pin digitali... smiley-confuse smiley-confuse
Logged

Pages: [1] 2   Go Up
Jump to: