Bibliothèque keypad avec PIN analogiques

Hello

j'ai un souci en essayant d'utiliser la fonction scanKeys de la bibliotheque keypad.

elle fonctionne très bien sur un arduino MEGA sur 16 PIN digital
mais je bloque sur un arduinon NANO
comme il n'y a que 14 PIN digital je suis obligé d'utiliser des PIN analogiques

est ce que cela peut fonctionner sans aucune modification ?

Merci

fredjust:
Hello

j'ai un souci en essayant d'utiliser la fonction scanKeys de la bibliotheque keypad.

elle fonctionne très bien sur un arduino MEGA sur 16 PIN digital
mais je bloque sur un arduinon NANO
comme il n'y a que 14 PIN digital je suis obligé d'utiliser des PIN analogiques

est ce que cela peut fonctionner sans aucune modification ?

Merci

bonsoir
si la question est : les pins analogiques peuvent il etre utilisés en digital ?
la reponse est oui

merci

meme les A6/A7 ?

car j'ai trouvé ca
http://forum.arduino.cc/index.php?topic=123176.0

"A6 and A7 are only inputs available to the mux in front of the ADC. There is no digital hardware behind the pins."

et comme j'utilisais 8 digital et 8 analogiques

fredjust:
merci

meme les A6/A7 ?

car j'ai trouvé ca
Arduino Nano - A6/A7 internal pull-up resistors - Microcontrollers - Arduino Forum

"A6 and A7 are only inputs available to the mux in front of the ADC. There is no digital hardware behind the pins."

et comme j'utilisais 8 digital et 8 analogiques

désolé , lu trop vite
je n'ai pas tilté sur "nano"
les A6 A7 ressorties sur du 328 CMS ne sont pas utilisables directement comme entrées digitales.
maintenant si c'est de la gestion en temps peu contraint , tu peux deriver ces 2 pins pour "une utilisation" digitale

merci

je vais donc retenter avec les 14 digital et que 2 analogique A0 A1

fredjust:
merci

je vais donc retenter avec les 14 digital et que 2 analogique A0 A1

là pas de problemes pour du "direct digital"
je ne sais pas ce que tu veux faire , mais comme à priori il te reste de la marge
j'eviterais d'utiliser 0 et 1 (RX/TX) de ton nano , plutot deriver sur A2 et A3
(ou tout autre combinaison)
et attention à D13

j'ai un pseudo clavier 8x8 (un échiquier en fait) avec des contacts reed
j'ai bricolé rapidement un code qui marchait sur MEGA en modifiant la bibliothèque keypad
là j'aimerai le faire tourner sur un NANO et épurer tout cela en replaçant le code utile directement dans mon prog

mais la bibliothèque keypad redefinit certaines fonctions !? (quel est l’intérêt ?)

virtual void pin_mode(byte pinNum, byte mode) { pinMode(pinNum, mode); }
virtual void pin_write(byte pinNum, boolean level) { digitalWrite(pinNum, level); }
virtual int  pin_read(byte pinNum) { return digitalRead(pinNum); }

et visiblement j'ai oublié un truc car cela ne fonctionne pas

fredjust:
j'ai un pseudo clavier 8x8 (un échiquier en fait) avec des contacts reed
j'ai bricolé rapidement un code qui marchait sur MEGA en modifiant la bibliothèque keypad
là j'aimerai le faire tourner sur un NANO et épurer tout cela en replaçant le code utile directement dans mon prog

mais la bibliothèque keypad redefinit certaines fonctions !? (quel est l’intérêt ?)

virtual void pin_mode(byte pinNum, byte mode) { pinMode(pinNum, mode); }

virtual void pin_write(byte pinNum, boolean level) { digitalWrite(pinNum, level); }
virtual int  pin_read(byte pinNum) { return digitalRead(pinNum); }




et visiblement j'ai oublié un truc car cela ne fonctionne pas

à suivre "plus" tard mais je viens de faire un "complement reflexion" :grin: sur D13
en fait tu veux une matrice 8X8 en entrée exploitable sur nano ?

la lib doit gerer des "ports complets"
si tu veux deriver sur du "plus petit" , il va "peut etre" te falloir mettre les mains dans le "cambouis" :grin:

Artouste:
à suivre "plus" tard mais je viens de faire un "complement reflexion" :grin: sur D13
en fait tu veux une matrice 8X8 en entrée exploitable sur nano ?

"complement reflexion"

??

ben oui mon prog fonctionne trop bien sur un mega

il fait tourner mon chessboARDuino à la perfection

je pensais que le simplifier serai simple

PS
comment éditer un message sur ce forum sans obtenir ce blocage :
You have exceeded the number of posts you can make in a 5 minutes period. Please try again later.

fredjust:

"complement reflexion"

??

bonsoir
D13 est aussi un "pin" qui peut qqfois poser probleme en entrée , c'est la led "embarquée" sur les arduinos basiques

Je viens de tester toute les PIN
après avoir vérifier mon prog sur une MEGA
et corrigé la numérotation des PIN sur ma NANO (A0 = 14)

les PIN posant problème sont
01 D1 / TX
13 D13
20 A6
21 A7

toute les autres fonctionnent avec la librairie Keypad (que j'ai ré intégrée pour les tests)

c'est pas de chance car il m'en manque qu'une seule pour pouvoir utiliser une carte SD en meme temps

faudrait que j'arrive a faire fonctionner la 1, peut etre en supprimant la biblio keypad.

pepe:
Bonsoir ...

ok donc tout est normal, j'ai retrouvé via mes tests des données techniques :wink:

est il possible d'utiliser la PIN 01 quand même dans les 16 nécessaires à mon "clavier 8x8"

c'est matériel comme impossibilité ou c'est contournable via la programmation ?

seule la fonction scanKeys est utilisée :

bool Keypad::scanKeys() {
	bool anyActivity = false; 	
	
	for (byte r=0; r<sizeKpd.rows; r++) {
		pin_mode(rowPins[r],INPUT_PULLUP);
	}

	for (byte c=0; c<sizeKpd.columns; c++) {
		pin_mode(columnPins[c],OUTPUT);
		pin_write(columnPins[c], LOW);	
		for (byte r=0; r<sizeKpd.rows; r++) {
			if (!digitalRead(rowPins[r])!=bitRead(bitMap[r],c))  
			{
				anyActivity=true;
			} 			
			bitWrite(bitMap[r], c, !digitalRead(rowPins[r]));  
		}
		pin_write(columnPins[c],HIGH);
		pin_mode(columnPins[c],INPUT);
	}
	return anyActivity;
}
[code]

fredjust:
c'est pas de chance car il m'en manque qu'une seule pour pouvoir utiliser une carte SD en meme temps
faudrait que j'arrive a faire fonctionner la 1, peut etre en supprimant la biblio keypad.

et si tu utilisais la 13 pour la SD ?

super merci pour ces précisions

effectivement j'utilise l'USB en continu pour envoyer l'état de l'échiquier

donc la solution serai d'avoir le choix soit USB soit SD pour le transfert des données

la SD doit utiliser 4 pin
D10
D11
D12
D13

sur nano :
14 numériques D0-D13
+8 analogiques A0-A7
-2 inutilisable comme entrée digitale A6/A7
-4 pour la SD D10-D13

=16 pour le clavier 8x8

le compte est bon :slight_smile: