Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Terminal Series
07-03-2014, 02:42 PM,
#11
RE: Terminal Series
ok, merci pour l'explication.

Alors j'ai testé et il semblerai que je sois bien dans le bon groupe, mais cat ne veut pas.

Terminal:
alx@alx-MM061:~$ cat /dev/ttyACM0
cat: /dev/ttyACM0: Permission non accordée
alx@alx-MM061:~$ sudo adduser $USER dialout
[sudo] password for alx:
L'utilisateur « alx » appartient déjà au groupe « dialout ».
alx@alx-MM061:~$ cat /dev/ttyACM0
cat: /dev/ttyACM0: Permission non accordée
alx@alx-MM061:~$
Reply
10-03-2014, 10:19 AM,
#12
RE: Terminal Series
Et avec ça ?

sudo chgrp -R plugdev /dev/bus/usb/
It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply
14-03-2014, 08:47 PM,
#13
RE: Terminal Series
Marche nickel
Merci
Reply
30-03-2014, 03:02 PM,
#14
RE: Terminal Series
Tu peux montrer ton programme ?
It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply
30-03-2014, 03:05 PM,
#15
RE: Terminal Series
pardon j'allais le poster ailleur

Voila pour le programme
// Variable pour désigner quelle pin est utilisée pour le capteur
int capteur = A0; // pin Analog 0
// Variable pour contenir la valeur du capteur
int valeur ;

void setup()
{
// Établit la connexion sérielle à 9600 bauds
Serial.begin(9600);
}

void loop()
{
// Lit la pin du capteur et l'assigne à la variable valeurPiezo
valeur = analogRead(capteur);
// Affiche au moniteur sériel la valeur de valeurPiezo
CDC.println(valeur);
// Laisse un court délai afin que l'utilisateur puisse lire les valeurs correctement
delay(100);
}
Reply
30-03-2014, 03:18 PM,
#16
RE: Terminal Series
1/ valeur est un nombre entre 0 et 1023 (10-bit ADC) et tu essaies d'afficher le code ASCII qui correspond mais ce code est un char donc théoriquement entre 0 et 255. Ça ne peut pas marcher pour les valeurs > à 255.
2/ tu démarres l'UART (Serial.begin) mais tu utilises l'USB CDC. C'est inutile.

Je ferais :

Code:
u16 valeur;

void setup()
{
}

void loop()
{
valeur = analogRead(A0);
CDC.printf("valeur=%d\r\n", valeur);
// ou bien
// CDC.print("valeur=");
// CDC.printNumber(valeur, DEC);
// CDC.print("\r\n");
delay(100);
}

PS: il est possible que printNumber ne marche pas mais la situation sera rétablit lors de la prochaine mise à jour de l'IDE.
It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply
30-03-2014, 03:23 PM, (This post was last modified: 30-03-2014, 03:26 PM by mapeds.)
#17
RE: Terminal Series
Ok merci, Wink

A quoi sert le u16 valeur;
Reply
30-03-2014, 04:24 PM,
#18
RE: Terminal Series
C'est un type de variable (comme char, int, long, etc) que j'ai repris de mon compilateur préféré CC5X (qui ne marche hélas que sous Windows et qui n'est pas open source mais quand même gratuit).
Si je te dis "int", tu me répondras que c'est un 16 bits ce qui est vrai avec SDCC mais faux avec GCC (32 bits dans ce cas). Je pense donc qu'il est préférable d'utiliser les types suivants :
u8 : 8 bits unsigned
s8 : 8 bits signed
u16 : 16 bits unsigned
s16 : 16 bits signed
u32 : 32 bits unsigned
s32 : 32 bits signed
et même pour les Pinguino 32 bits (SDCC n'accepte pas les 64 bits):
u64 : 64 bits unsigned
s64 : 64 bits signed
Moins de risque d'erreur et une parfaite compatibilité entre les Pinguino 8 bits et 32 bits.
Dans ton cas tu sais que la valeur analogique est un entier non signé sur 16 bits donc u16.
Si tu utilises une boucle for de 0 à 10 autant utilisé un u8 qu'un int, tu gagneras un octet.
Pour autant, ce raisonnement à ses limites car un compilateur comme GCC promeut toutes les variables inférieures à 32 bits en 32 bits donc même si tu déclares ton compteur avec u8 ce sera un u32 à la fin. Disons que ça simplifie aussi la compréhension du programme et la détection d'erreur comme dans ton cas où toutes les variables étaient des 16 bits signées (int).
It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)