Arduino, mBlock, Ardublock, bluetooth
Quand on utilise le module grove bluetooth, qu’on le connecte sur le connecteur UART, et qu’on veut téléverser un programme, il ne faut pas oublier de débrancher le module bluetooth car si le connecteur UART utilise les broches Rx et Tx, la liaison usb aussi. Il y a donc un conflit et échec du téléversement.
Pensez-y …
Bonjour, j’ai eu plusieurs difficultés pour allumer et éteindre une led par une appli APP Inventor, via Bluetooth. En envoyant des “1” et des “0”, je n’y arrivais pas. J’y suis seulement arrivé en envoyant des lettres (ici, “M” pour mettre la led “ON”, et “N” pour “OFF”).
Egalement, lorsque j’ai voulu commander un servo en même temps (les mettre à 90° pour “M” et à “0°” pour “N”), le servo avait des hoquets de 10° environ. J’ai résolu cela en envoyant non pas “M” ou “N”, mais en envoyant “MX” ou “NX”. Du coup, en recevant “MX”, Arduino comprenait le “M” et mettait “ON” ainsi qu’à 90°, et comme il terminait par “X” (une lettre ne commandant rien) il n’y avait plus de hoquet sur le servo….
Voici le programme issu d’Ardublock : (celui que j’ai trouvé dans la version 62. Mais cela fonctionne peut-etre avec d’autres versions moins récentes).
#include
#include
// AIDE Gérer des échanges entre App inventor et Ardublock : https://lc.cx/oTLn
Duinoedu_SerialPlus monSerialPlus;
char _ABVAR_1_Text_recu = ‘ ‘ ;
void setup()
{
monSerialPlus.branch(8,9);
monSerialPlus.begin(9600);
pinMode( 13 , OUTPUT);
}
void loop()
{
_ABVAR_1_Text_recu = monSerialPlus.recevoir1Octet(DUINOEDU_MEMORISER_TOUCHE);
if (( ( _ABVAR_1_Text_recu ) == (‘M’) ))
{
digitalWrite(13 , HIGH);
monSerialPlus.envoyerTexte(“Allumer LED 13”,100,60);
delay( 1000 );
}
if (( ( _ABVAR_1_Text_recu ) == (‘N’) ))
{
digitalWrite(13 , LOW);
monSerialPlus.envoyerTexte(“Eteindre LED 13”,100,60);
delay( 1000 );
}
}
et au niveau d’APP inventor, j’utilise :
when (click sur le bouton) .click
do (call (client_Bluetooth1) .SendText text:) “NX”
Si cela peut aider d’autres…
Merci pour le partage.