communication android arduino
#21 Guest_flo_*
Posté 25 décembre 2011 - 03:06
#22
Posté 26 décembre 2011 - 04:19
up??
je ne vais pas te donner la solution ( car je ne l'ai pas ) mais juste un petit conseil:
essaie de commenté ton code pour 2 raison
1er nous sa nous aide a comprendre
2eme cela permet parfois de comprendre d'ou vien le probleme
a mon avis c'est dans la gestion des thread que ca plante
++
#23 Guest_flo_*
Posté 26 décembre 2011 - 10:55
#24 Guest_flo_*
Posté 26 décembre 2011 - 12:07
package Flo.reception; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; import android.widget.ToggleButton; public class ReceptionActivity extends Activity { ToggleButton conn_but; ToggleButton dist_rec; TextView bt_state; TBlue tblue; TextView dist; String dist_recu; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); conn_but = (ToggleButton)findViewById(R.id.conn_bt); // dist_rec = (ToggleButton)findViewById(R.id.toggleButton1); // bt_state = (TextView)findViewById(R.id.bt_etat); //initialise les objet dist = (TextView)findViewById(R.id.textView3); // conn_but.setOnClickListener(new OnClickListener() { //declanche une action au clique sur le togglebouton de connection @Override public void onClick(View v) { if(conn_but.isChecked()) //si le togglebutton et a l'etat haut: lance la connection { tblue = new TBlue("00:06:66:06:BF:3A"); //connecte le bluetooth if(tblue.streaming()) // { // bt_state.setText("connecter"); //indique que la connection entre le telephone et la carte et ok } // else // { //indique qu'il y a ue une erreur de connection bt_state.setText("erreur!"); // } // } else //si togglebutton a etat bas { // tblue.close(); //ferme la connection bluetooth bt_state.setText("deco"); // } // } }); dist_recu = tblue.read(); //lis les donné envoyer sur le bluetooth (cette ligne pose problemme) dist.setText(dist_recu); //incrit les donné envoyer par la carte } }
Ps: désoler j'oubli toujours de commenter mes code
#25
Posté 27 décembre 2011 - 03:05
cette portion de code doit etre deplacé dans le bloque "if(tblue.streaming())"...
dist_recu = tblue.read(); //lis les donné envoyer sur le bluetooth (cette ligne pose problemme) dist.setText(dist_recu); //incrit les donné envoyer par la carte
Comme dans le code suivant
La connection est effectué, puis le click du bouton enverra tes données.
Idealement, tu devrais mettre ton code blutooth dans un thread a part et ajouter des handlers de message pour les receptions de données et les events de connections (ainsi qu'une pile de message pour l'envoi, avec des ID pour chaque message) pour pouvoir remapper les commandes et les reponses. (bon ok, je suis pas sur d'etre comprehensible sur ce coup là ^^)
Code fait a l'arrache et pas tester (mais dans l'esprit)
package Flo.reception; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; import android.widget.ToggleButton; public class ReceptionActivity extends Activity { ToggleButton conn_but; ToggleButton dist_rec; TextView bt_state; TBlue tblue; TextView dist; String dist_recu; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); conn_but = (ToggleButton)findViewById(R.id.conn_bt); // dist_rec = (ToggleButton)findViewById(R.id.toggleButton1); // bt_state = (TextView)findViewById(R.id.bt_etat); //initialise les objet dist = (TextView)findViewById(R.id.textView3); // tblue = new TBlue("00:06:66:06:BF:3A"); //connecte le bluetooth conn_but.setOnClickListener(new OnClickListener() { //declanche une action au clique sur le togglebouton de connection @Override public void onClick(View v) { if(tblue.streaming()) // { // dist_recu = tblue.read(); //lis les donné envoyer sur le bluetooth (cette ligne pose problemme) dist.setText(dist_recu); //incrit les donné envoyer par la carte } // } }); } void finalize() { tblue.close(); //ferme la connection bluetooth } }
#26 Guest_flo_*
Posté 27 décembre 2011 - 05:22
cette action et telle possible??
#27
Posté 27 décembre 2011 - 08:10
Merci de ton aide le code fonctionne mais il y a encore un petit détail je voudrais que le l'appli donne la distance pas seulement quand j'appui sur un bouton mais tout le temps.
cette action et telle possible??
Oui, tu places ta comm bluetooth dans un thread ou tu temporises un evenement regulier (pour eviter de saturer ton CPU, ta bande passante Bluetooth et ton Arduino).
Et là, ca se complique un peu : le thread principal (ton "Main") qui fait la mise a jour du GUI (ton "TextView")ne peux pas être mis a jour depuis un autre thread. Il faut donc que tu ajoutes un Handler entre les deux threads qui permet de lancer des messages (du thread qui boucle pour la distance) vers le thread principal pour qu'il puisse mettre a jour le TextView (je te laisse chercher un peu sur google ca ne devrait pas etre trop compliquer a trouver )
#28 Guest_flo_*
Posté 27 décembre 2011 - 09:42
c'est bien sa??
en tout cas merci de ta reponse
#29 Guest_flo_*
Posté 29 décembre 2011 - 11:19
Serait il possible d'avoir des info en plus svp??
Merci d'avance
#30
Posté 29 décembre 2011 - 07:01
Cela fait plusieur jour que je cherche mais je ne trouve pas :'(
Serait il possible d'avoir des info en plus svp??
Merci d'avance
Si l'anglais ne te fait pas peur
http://android-codes...-ui-thread.html
ou sinon en francais (ca cause des progressbars mais c'est le meme esprit : Une Activity, un Thread, un Handler)
http://www.ace-art.f...de-progression/
#31 Guest_flo_*
Posté 30 décembre 2011 - 11:18
Je test l'appli et si elle fonctionne je poste le code
#32 Guest_flo_*
Posté 30 décembre 2011 - 12:06
#33 Guest_flo_*
Posté 30 décembre 2011 - 01:35
#include <Servo.h> #define SERVO_PIN 9 #define Analog_pin A0 Servo serv; static int pos = 0; char ch; int distance; long milliref; const int E1 = 7; const int E2 = 4; const int M1 = 6; const int M2 = 5; void setup() { pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(E1, OUTPUT); pinMode(E2, OUTPUT); pinMode(Analog_pin, INPUT); pinMode(SERVO_PIN, OUTPUT); serv.attach(SERVO_PIN); serv.write(90); Serial.begin(115200); } void loop() { if (Serial.available()) {;} char ch = Serial.read(); switch(ch) { case '0'...'9': pos = pos * 10 + ch - '0'; break; case 's': serv.write(pos); pos = 0; break; case 'a': avance(); break; case 'r': recule(); break; case 'd': droite(); break; case 'g': gauche(); break; case 'w': arret(); break; } if(millis()>(milliref+1000)) { milliref = milliref +1000; distance = analogRead(Analog_pin); distance = (distance * 10) / 241;//converti la val analogique en val numerique Serial.print(distance); } } void avance() { digitalWrite(E1, HIGH); digitalWrite(E2, HIGH); digitalWrite(M1, HIGH); digitalWrite(M2, HIGH); } void recule() { digitalWrite(E1, HIGH); digitalWrite(E2, HIGH); digitalWrite(M1, LOW); digitalWrite(M2, LOW); } void droite() { digitalWrite(E1, HIGH); digitalWrite(E2, HIGH); digitalWrite(M1, LOW); digitalWrite(M2, HIGH); } void gauche() { digitalWrite(E1, HIGH); digitalWrite(E2, HIGH); digitalWrite(M1, HIGH); digitalWrite(M2, LOW); } void arret() { digitalWrite(E1, LOW); digitalWrite(E2, LOW); digitalWrite(M1, HIGH); digitalWrite(M2, HIGH); }
le probleme est qu'il me revoi une valeur inverser plus je suis prés plus la valeur et grande le capteur et un capteur Sharp
Pouvez vous m'aidé??
#34
Posté 30 décembre 2011 - 02:58
tu dois donc inverser tes conditions.
par contre, pour ta conversion, je ne comprends pas trop (*10/241): tu veux convertir en quoi?
si tu veux convertir ta valeur en tension tu dois multiplier par 5 puis diviser par 1024 (si ton capteur est alimenté en 5V)
ensuite si tu veux le convertir en distance, il faut utiliser un tableau de valeurs (car la tension n'est pas proportionelle à la distance)
tu as un code d'exemple ici: arduino103.blogspot.com/2011/06/detecteur-de-proximite-infrarouge-sharp.html
#35 Guest_flo_*
Posté 30 décembre 2011 - 08:10
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users