V.O. 08/06/2020
rev 02/12//2022
j'avais ce module dans mes tiroirs , depuis 3 ans ! car je suis
plutot orienté PIC !
je me suis quand meme décidé à le tester , bien que la
phylosophie ARDUINO = tout Pré-mâché , ne m'emballe pas du
tout.
comme quoi, le proverbe "fontaine, je ne boirai pas de ton
eau" s'applique ici.
ARDUINO :
Hardware
: Module Arduino mini
Cordon
Prolific de liaison
Pinout
et schema
Software
#1 :
Le Classique Test clignotement Led
Software
#2
Test sur
module 4 matrices 8x8 H avec MAX7219
Modification
source original
Video
Version
PIC 18F26K22 (Microchip)
Software #3
Detection de code DTMF
HARDWARE
Module Arduino Pro Mini ATMega328 5V 16MHz , "the Simple"
Cordon
Prolific
apparait comme port virtuel COM23 ou COM25 (sur mon PC)
Pinout et
schema :
SOFTWARE #1 :
mon tout 1er test : led clignotante
Affichage resultat sur Terminal via le COM virtuel USB (9600bds)
(14:28:11.438) Arduino
pro mini Simple 16MHz 5V
(14:28:11.479) 1er Test 04 juin 2020
(14:28:11.518) Debut=0
(14:28:16.435) Valeur de a :18205
(14:28:16.459) Compteur =0
(14:28:16.499) Led High
(14:28:17.436) Led Low
(14:28:18.430) .
(14:28:18.474) Compteur =1
(14:28:18.474) Led High
(14:28:19.429) Led Low
(14:28:20.429) .
(14:28:20.459) Compteur =2
(14:28:20.459) Led High
(14:28:21.429) Led Low
Software:
sketch_2020_jun_04a.ino
Résultat de compilation :
ArduinoSimple_compilation_1er_Skecht_cligote_Led.log
nota :
LED_BUILTIN = Led implantée sur le module , connectée à pin 13
SOFTWARE #2 :
Dot Matrix 8x8 avec MAX7219
Prototype Hardware:
Le montage est entierment alimenté via le cordon USB
à noter que le reglage de luminosité est au minima !
L'arduino mini Pro ne necessite pas de programmateur externe .
La liaison USB sert aussi de terminal liaison COM virtuelle
nota : la chose noire sur les fils = pince de maintien des fils
!
SOFTWARE :
issu de la version originale :
* Dot matrix control Scrolling
* Tutorial: https://www.electronoobs.com/eng_arduino_tut56.php
* Schematic: https://www.electronoobs.com/eng_arduino_tut56_sch1.php
* LedControl library: https://www.electronoobs.com/eng_arduino_ledcontrol.php
* 1er test avec
version originale : -> BAD => modif ordre inverse des
digits => OK
* REVISION : 07-06-2020
* usage de bloc de 4 matrices _x8 H avec connecteur d'entrée à
GAUCHE !
* modif pour sens de deplacement
* modif pour Font 8x8 thin
* avec caractere special °C (code 39 elide => code 134 degré)
* Font: THIN_SS_2019.pf
* 2em test Arduino Pro mini 5V 16Mhz "The Simple"
* MODULE Arduino Por Min SIMPLE ->OK
Modifs:
// rev 19/03/2020
// Font: THIN_SS_2019.pf
// rev PF 10-12-2019 caract degré C en 134 (0x86)
const unsigned char font_8x8_H [] PROGMEM = // Font: My_8X8_FONT.pf
{
/* 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Char 000
(.)
0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, // Char 001 (.)
.... etc
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Char 255 (.)
};
Symbole ° au lieu de élidé
// Scroll Message
void scrollMessage(const unsigned char * messageString) {
int counter = 0;
int myChar=0;
do {
// read back a char
myChar = pgm_read_byte_near(messageString + counter);
if (myChar != 0){
if (myChar==39) myChar=134;
loadBufferLong(myChar);
}
counter++;
}
while (myChar != 0);
}
// Load character into scroll buffer
void loadBufferLong(int ascii){
if ((ascii >= 0x20 && ascii <=0x7f) || (ascii==134))
{ for (int a=0;a<8;a++){
..etc ..
Inversion sens digits
// Display Buffer on LED matrix
void printBufferLong(){
for (int a=0;a<8;a++) // Loop
8 times for a 8x8 font
{
unsigned long x = bufferLong [a*2+1]; // Get high buffer entry
byte y = x; // Mask off first character
lc.setRow(0,a,y); // Send row to relevent MAX7219 chip
x = bufferLong [a*2]; // Get low buffer entry
y = (x>>24); // Mask off second character
lc.setRow(1,a,y); // Send row
to relevent MAX7219 chip
y = (x>>16); // Mask off third character
lc.setRow(2,a,y); // Send row
to relevent MAX7219 chip
y = (x>>8); // Mask off forth character
lc.setRow(3,a,y); // Send row
to relevent MAX7219 chip
}
}
MAJ source :
Dot_matrix_MAX7219_scrol_2020_0607.ino
Fonte : THIN_SS_2020.h
Video :
Arduino_mini_Pro_Simple_Defil_4_Matrices_8x8H_2020_0606.webm
Ma conclusion :
librairies Arduino Efficaces, mais trop simple !
quelle plus-value de formation apportent-elles ?
Open discussion ..
Version PIC18F !:
Base_18F26K22_test_defilement_1_bloc_de_4_Matrice8x8_H_2020_06_08.c
SOFTWARE #3 :
Decodage signal Touche DTMF
voir aussi coté PIC18F Generateur de codes DTMF (versions: MikroC et MPALBXC8)
L'amplitude de sortie de ce générateur (0,5V cr cr )
nécessiterait une amplification de 5 à 10x ,
à cause du filtrage passe bas (4,7K + 47nF) qui elimine les
harmoniques du PWM ,
et reduit fortement l'amplitude initiale.( 0 à 5V !) . Il ne
peut donc pas etre utilisée directement.
De ce fait, usage de l'application web : VENEA.NET générateur DTMF
Sortie signal de la carte >SON du PC , direct sur entree
analogique Arduino Simple. : niveau > 3V cr Cr.
Hardware :
uniquement 1 entree Analogique .
le module est alimenté via la liaison USB via cordon Prolific 6
pins
Qui set à la programmation et aussi comme terminal :
liaison port viruel COM 36 pour terminal PC YAT
Le terminal affiche le code DTMF reconnu ..
Le signal DTMF doit avoir une
duree de 500mS et doit etre au standard DTMF
rappel :
uint16_t Frow_value[4]={ 697, 770, 852, 941}; // Hz
uint16_t Fcol_value[4]={ 1209,1336,1477,1633}; //Hz
// 1 2 3 A .....697
// 4 5 6 B .....770
// 7 8 9 C ....1477
// * 0 # D.... 1633
Attention : le Terminal PC YAT doit etre désactivé pour pouvoir
faire un upload du programme dans l'Arduino.
Software :
Je n'ai pas ré-inventé la roue : usage de la librairie Goertzel..
voir les details sur le Gitub de la librairie.
Nota : attention à
Detect.h ... ne pas melanger avec
l'appli utilisant Goertzel.c ou h
Apres quelques modifs mineures,le programme est opérationnel ..
Il faut quand meme un niveau de signal elevé sur l'entree Ana :
> 3,0V cr cr
----------------------------------------------------------------------------
*
Il me semble qu'il y a une incoherence ici :
//const float threshold
= 2000; //minimum tone amplitude to be considered we can change
it for more senstivity
// ???? avec ADC 10 bits -> maxi=1023 !!!
modifié : par
const float threshold = 300; // nettement reduit, en fonction des
valeurs lues dans le test préalable de l'ADC
modif aussi du Nb de sample -> 100 -> passé à 200 ,
pour ameliorer la fiabilité de détection .
un éclairage externe la dessus serait le bienvenu ..
----------------------------------------------------------------------------
Le logiciel Venea.Net permet d'envoyer automatiquement une
séquence DTMF des touches : 123456789*0#ABCD
de duree 500mS avec un interval de 1 sec
...ou séparément via le clavier 4x4 DTMF .
affichage sur PC , seulement si detection OK pour les 2
frequences !
F1 et F2 Frequences detectée et touche correspondante
exemple si le programme est OK , et avec la seqence envoyée par
Vena.Net :
123456789*0#ABCD
1209.00<LF>697.00<LF>
Touch=1<LF>.
1336.00<LF>697.00<LF> Touch=2<LF>.
1477.00<LF>697.00<LF> Touch=3<LF>.
1209.00<LF>770.00<LF> Touch=4<LF>.
1336.00<LF>770.00<LF> Touch=5<LF>.
1477.00<LF>770.00<LF> Touch=6<LF>.
1209.00<LF>852.00<LF> Touch=7<LF>.
1336.00<LF>852.00<LF> Touch=8<LF>.
1477.00<LF>852.00<LF> Touch=9<LF>.
1209.00<LF>941.00<LF> Touch=*<LF>.
1336.00<LF>941.00<LF> Touch=0<LF>.
1477.00<LF>941.00<LF> Touch=#<LF>.
1633.00<LF>697.00<LF> Touch=A<LF>.
1633.00<LF>770.00<LF> Touch=B<LF>.
1633.00<LF>852.00<LF> Touch=C<LF>.
1633.00<LF>941.00<LF> Touch=D<LF>.
Si on ne detecte
pas ..on ne voit rien .. d'ou le
minimum d' affichage entête du programme
sur le terminal et aussi le clignotement led au démarrage. (led
sur le module Arduino !)
Un test préalable sur l'ADC est réalisé ! edition de mini,moyenne,max
valeur lue.
la connection d'un module HT9170B en parrallele sur l'entree
analogique , permet de voir
sur ses 4 leds de sortie, le code DTMF présenté ..
c'est le "multimetre software" et juge de paix!
Nota :
ce programme utilise toutes les ressources MCU lorsqu'il est en
attente de decodage
avec 2 boucles while infinies ..une pour chaque
Frequence du code DTMF.
Software :
arduino_code_dtmf_decoder_2022.zip
arduino_code_dtmf_decoder_2022.ino
une suite ?
Transposition sur PIC18F XC8 ? ..utilité lorsqu'on a sous la
main un décoder Hardware HT9170B ?
pas la peine de se triturer les neurones !