Mon objectif est le suivant : prélever le niveau d'une batterie et l'envoyer pour l'afficher sur APP Inventor. Auriez-vous des idées pour le réaliser ?
Pour lire le pourcentage de la batterie sur la console Arduino j'ai pour l'instant le programme suivant :
const int BATTERYPIN = A0;
const float TensionMax = 5;
const float TensionMin = 0;
void setup ();
Serial.begin(9600);
void loop()
float b = analogRead(BATTERYPIN);
int minValue = (1023 * TensionMin) / 5;
int maxValue = (1023 * TensionMax) / 5;
b = ((b - minValue) / (maxValue - minValue)) * 100;
if (b > 100)
b = 100;
else if (b < 0)
b = 0;
int value = b;
Serial.println(value);
delay(1000);
je crois que le HC-05 est branché sur les ports 10 et 11
pour des raisons de clarté je préfère vous envoyez directement le programme complet que j'ai jusqu'à maintenant :
#include <SoftwareSerial.h>
#include <Duinoedu_SerialPlus.h>
//Tuto App inventor : https://lc.cx/Jksu
Duinoedu_SerialPlus monSerialPlus;
String messageRecu = "" ;
// AIDE Gérer des échanges entre App inventor et Ardublock : https://lc.cx/oTLn
int pwm_b = 9; //PWM control for motor outputs 3 and 4
int dir_b = 8; //direction control for motor outputs 3 and 4
const int BATTERYPIN = A0;
const float TensionMax = 5;
const float TensionMin = 0;
void setup()
{
pinMode( 2 , OUTPUT);
pinMode( 3 , OUTPUT);
monSerialPlus.branch(10,11);
monSerialPlus.begin(9600);
digitalWrite(2 , LOW);
digitalWrite(3 , LOW);
pinMode(pwm_b, OUTPUT);
pinMode(dir_b, OUTPUT);
analogWrite(pwm_b, 0);
Serial.begin(9600);
}
void loop()
{
messageRecu = monSerialPlus.readText(DUINOEDU_NE_PAS_MEMORISER ) ;
if (( ( String(messageRecu) ) == ( String("LED:1") ) ))
{
digitalWrite(2 , HIGH);
digitalWrite(3 , LOW);
digitalWrite(dir_b, LOW);
analogWrite(pwm_b, 255);
messageRecu = """" ;
}
if (( ( String(messageRecu) ) == ( String("LED:0") ) ))
{
digitalWrite(3 , HIGH);
digitalWrite(2 , LOW);
digitalWrite(dir_b, HIGH);
analogWrite(pwm_b, 255);
messageRecu = """" ;
}
if (( ( String(messageRecu) ) == ( String("LED:2") ) ))
{
digitalWrite(3 , LOW);
digitalWrite(2 , LOW);
analogWrite(pwm_b, 0);
messageRecu = """" ;
}
float b = analogRead(BATTERYPIN);
int minValue = (1023 * TensionMin) / 5;
int maxValue = (1023 * TensionMax) / 5;
b = ((b - minValue) / (maxValue - minValue)) * 100;
if (b > 100)
b = 100;
else if (b < 0)
b = 0;
int value = b;
Serial.println(value);
delay(1000);
}
le but est de controler un moteur ainsi que de renvoyer le poucentage de la batterie, mais ici le arduino "n'envoie" pas réellement la valeur du pourcentage de la batterie au module bluetooth
les 2 bibliothèques proviennet de Ardublock , je ne les ai pas choisis moi mais tout fonctionne comme ça, je ne sais juste pas comment envoyer la valeur du pourcentage de la batterie au module Bluetooth, qui sera ensuite afficher sur mon application
cependant je ne peux pas vous envoyer le fichier aia car je suis considéré comme nouvel utilisateur
bonjour @jpbbricole, après avoir essayer ce que vous m'avez conseillé (bien que l'ayant légérement modifié) j'ai réussi à afficher le pourcentage de la batterie, mais je suis confronté à un nouveau problème.
Je souhaiterais modifié la couleur de l'affichage en fonction du niveau de batterie, mais je n'y arrive pas
je n'arrive pas à faire comparer la valeur de la batterie avec des valeurs limites tel que 50 ou 20, la valeur de la batterie est de 0 car elle correspond au nombre d'octets disponibles
Je suis conscient que ici le problème provient d'app inventor et non d'arduino, mais je me permets de vous demander de l'aide
comme la dernière fois, je suis considéré comme nouvel utilisateur donc je ne peux malheureusement pas vous fournir le fichier AIA, et que voulez vous dire par sketch ?
Je ne pensai pas que ca durai si longtemps, ce délais
Tu as bien zippé l'AIA et copié et collé le zip dans le forum?
Ou essaies de me l'envoyer en message privé.
C'est le fichier INO qui est le programme de l'Arduino.
Copier l'entier du programme dans le presse-papier, dans le message cliquer sur l'icône <code> et y coller le presse papier.
Ton problème provient d'un mélange des genres, en l'occurrence, des String et des int.
Quand tu fais: monSerialPlus.println(value);
si value vaut 50, tu envoies un mot de 2 caractères composé d'un 5 et d'un 0
pour envoyer une valeur de 50, il faut faire monSerialPlus.write(value);
Dans ton programme MAI, tu compares des integer, alors que tu reçois des String.
Dans cette partie, sans rien changer dans le sketch Arduino:
remplace le module bleu par ceci: