Un autre problème de transmission 433mhz
voilà, j'ai encore un soucis avec mes arduinos reliés en 433mhz, voici mes codes (explications à la fin du post) :
celui de l'émetteur :
et celui du récepteur :
mon problème étant qu'il ne fonctionne qu'une fois, après si je veux le réouvrir/fermé, il faut le débrancher/rebrancher ...
merci d'avance, wolsterking
celui de l'émetteur :
quote
/***************************************************l'émetteur utilise un lecteur d'empreinte digital.
example sketch our optical fingerprint sensor
designed work adafruit bmp085 breakout
----> http://www.adafruit.com/products/751
these displays use ttl serial communicate, 2 pins required
interface
adafruit invests time , resources providing open source code,
please support adafruit , open-source hardware purchasing
products adafruit!
written limor fried/ladyada adafruit industries.
bsd license, text above must included in redistribution
****************************************************/
#include <adafruit_fingerprint.h>
#include <softwareserial.h>
#include <rcswitch.h>
rcswitch myswitch = rcswitch();
int getfingerprintidez();
const int led = 7;
unsigned long ouverture = 111111;
unsigned long fermeture = 222222;
// pin #2 in sensor (green wire)
// pin #3 out arduino (white wire)
softwareserial myserial(2, 3);
adafruit_fingerprint finger = adafruit_fingerprint(&myserial);
// on leonardo/micro or others hardware serial, use those! #0 green wire, #1 white
//adafruit_fingerprint finger = adafruit_fingerprint(&serial1);
void setup()
{
pinmode(led, output);
serial.begin(9600);
myswitch.enabletransmit(10);
serial.println("init ");
serial.begin(9600);
while (!serial); // yun/leo/micro/zero/...
serial.begin(9600);
serial.println("adafruit finger detect test");
// set data rate sensor serial port
finger.begin(57600);
if (finger.verifypassword()) {
serial.println("found fingerprint sensor!");
} else {
serial.println("did not find fingerprint sensor");
while (1);
}
serial.println("waiting valid finger...");
}
void loop() // run on , on again
{
getfingerprintidez();
delay(50); //don't ned run @ full speed.
}
uint8_t getfingerprintid() {
uint8_t p = finger.getimage();
switch (p) {
case fingerprint_ok:
serial.println("image taken");
break;
case fingerprint_nofinger:
serial.println("no finger detected");
return p;
case fingerprint_packetrecieveerr:
serial.println("communication error");
return p;
case fingerprint_imagefail:
serial.println("imaging error");
return p;
default:
serial.println("unknown error");
return p;
}
// ok success!
p = finger.image2tz();
switch (p) {
case fingerprint_ok:
serial.println("image converted");
break;
case fingerprint_imagemess:
serial.println("image messy");
return p;
case fingerprint_packetrecieveerr:
serial.println("communication error");
return p;
case fingerprint_featurefail:
serial.println("could not find fingerprint features");
return p;
case fingerprint_invalidimage:
serial.println("could not find fingerprint features");
return p;
default:
serial.println("unknown error");
return p;
}
// ok converted!
p = finger.fingerfastsearch();
if (p == fingerprint_ok) {
serial.println("found print match!");
} else if (p == fingerprint_packetrecieveerr) {
serial.println("communication error");
return p;
} else if (p == fingerprint_notfound) {
serial.println("did not find match");
return p;
} else {
serial.println("unknown error");
return p;
}
// found match!
serial.print("found id #"); serial.print(finger.fingerid);
serial.print(" confidence of "); serial.println(finger.confidence);
}
// returns -1 if failed, otherwise returns id #
int getfingerprintidez() {
uint8_t p = finger.getimage();
if (p != fingerprint_ok) return -1;
p = finger.image2tz();
if (p != fingerprint_ok) return -1;
p = finger.fingerfastsearch();
if (p != fingerprint_ok) return -1;
// found match!
if (finger.fingerid == 10) {
digitalwrite(led, high);
myswitch.send(ouverture, 24);
myswitch.send(ouverture, 24);
myswitch.send(ouverture, 24);
myswitch.send(ouverture, 24);
myswitch.send(ouverture, 24);
delay(1000);
myswitch.send(fermeture, 24);
digitalwrite(led, low);
}
}
et celui du récepteur :
quote
// sweepcelui là ouvre et ferme un loquet lorsqu'il recoit un signal,
// barragan <http://barraganstudio.com>
// example code in public domain.
#include <servo.h>
#include <rcswitch.h>
const int led = 3;
servo myservo; // create servo object control servo
// maximum of 8 servo objects can created
int nbr = 0;
int pos = 0; // variable store servo position
rcswitch myswitch = rcswitch();
void setup()
{
pinmode(led, output);
serial.begin(9600);
myswitch.enablereceive(0);
serial.print("allumé");
myservo.attach(12); // attaches servo on pin 9 servo object
}
void loop()
{
if (myswitch.available()) {
int value = myswitch.getreceivedvalue();
if (myswitch.getreceivedvalue()==111111){
digitalwrite(led, high);
for(pos = 110; pos>=1; pos-=1) // goes 180 degrees 0 degrees
{
myservo.write(pos); // tell servo go position in variable 'pos'
delay(15); // waits 15ms servo reach position
}
delay(2000);
for(pos = 0; pos < 110; pos += 1) // goes 0 degrees 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo go position in variable 'pos'
delay(15); // waits 15ms servo reach position
}
digitalwrite(led, low);
int value = myswitch.getreceivedvalue();
serial.print("stopped");
}
myswitch.resetavailable();
}
}
mon problème étant qu'il ne fonctionne qu'une fois, après si je veux le réouvrir/fermé, il faut le débrancher/rebrancher ...
merci d'avance, wolsterking
il y une smiley à lunettes dans votre code - utilisez les tags
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Un autre problème de transmission 433mhz
arduino
Comments
Post a Comment