Hola a todos, espero que se encuentren muy bien!
Verán, estoy construyendo una maqueta de una casa automatizada, por ahora tengo que encender focos y hacer funcionar un servomotor, ambos códigos por separado funcionan correctamente, pero no logro hacerlos funcionar juntos y me gustaría que así sea, estoy usando arduino NANO, de verdad les agradecería mucho su ayuda.
Los códigos son los siguientes:
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial BT(10,11);
Servo servo;
int dato = 0;
void setup() {
BT.begin(9600);
Serial.begin(9600);
servo.write(0);
servo.attach(9);
}
void loop() {
if (BT.available()){
dato = BT.read();
if(dato == '0'){
servo.write(0);
BT.print ("0 grados");
BT.println("-->[Posicion Minima]");
}
else if(dato =='9'){
servo.write(90);
BT.println("90 grados");
}
else if(dato =='I'){
servo.write(180);
BT.println("360 grados");
}
}
}
#include <SoftwareSerial.h>
SoftwareSerial BT(10,11);
char DB;
int led1=2;
int led2=3;
int led3=4;
int led4=5;
int led5=6;
int led6=7;
int led7=8;
boolean onled1=LOW;
boolean onled2=LOW;
boolean onled3=LOW;
boolean onled4=LOW;
boolean onled5=LOW;
boolean onled6=LOW;
boolean onled7=LOW;
void setup() {
BT.begin(9600);
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);
digitalWrite(led4,0);
digitalWrite(led5,0);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
void loop() {
if (BT.available()){
DB= BT.read();
Serial.println(DB);
switch(DB){
case 'a':
onled1 = !onled1;
digitalWrite(led1,onled1? HIGH:LOW);
break;
case 'b':
onled2 = !onled2;
digitalWrite(led2,onled2? HIGH:LOW);
break;
case 'c':
onled3 = !onled3;
digitalWrite(led3,onled3? HIGH:LOW);
break;
case 'd':
onled4 = !onled4;
digitalWrite(led4,onled4? HIGH:LOW);
break;
case 'e':
onled5 = !onled5;
digitalWrite(led5,onled5? HIGH:LOW);
break;
case 'f':
onled6 = !onled6;
digitalWrite(led6,onled6? HIGH:LOW);
break;
case 'g':
onled7 = !onled7;
digitalWrite(led7,onled7? HIGH:LOW);
break;
}
}
delay(10);
}
En el primer código usas
servo.write(0);
0 es un pin dedicado a la comunicación serie. Usa por favor otro pin que no sea ni 0 ni 1.
Le eh cambiado como me has dicho:
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial BT(10,11);
Servo servo;
int dato = 0;
void setup() {
BT.begin(9600);
Serial.begin(9600);
servo.write(2);
servo.attach(9);
}
void loop() {
if (BT.available()){
dato = BT.read();
if(dato == '0'){
servo.write(2);
BT.print ("0 grados");
BT.println("-->[Posicion Minima]");
}
else if(dato =='9'){
servo.write(90);
BT.println("90 grados");
}
else if(dato =='I'){
servo.write(180);
BT.println("360 grados");
}
}
}
#include <SoftwareSerial.h>
SoftwareSerial BT(10,11);
char DB;
int led1=3;
int led2=4;
int led3=5;
int led4=6;
int led5=7;
int led6=8;
boolean onled1=LOW;
boolean onled2=LOW;
boolean onled3=LOW;
boolean onled4=LOW;
boolean onled5=LOW;
boolean onled6=LOW;
void setup() {
BT.begin(9600);
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);
digitalWrite(led4,0);
digitalWrite(led5,0);
digitalWrite(led6,0);
}
void loop() {
if (BT.available()){
DB= BT.read();
Serial.println(DB);
switch(DB){
case 'a':
onled1 = !onled1;
digitalWrite(led1,onled1? HIGH:LOW);
break;
case 'b':
onled2 = !onled2;
digitalWrite(led2,onled2? HIGH:LOW);
break;
case 'c':
onled3 = !onled3;
digitalWrite(led3,onled3? HIGH:LOW);
break;
case 'd':
onled4 = !onled4;
digitalWrite(led4,onled4? HIGH:LOW);
break;
case 'e':
onled5 = !onled5;
digitalWrite(led5,onled5? HIGH:LOW);
break;
case 'f':
onled6 = !onled6;
digitalWrite(led6,onled6? HIGH:LOW);
break;
}
}
delay(10);
}
Surbyte:
En el primer código usas
servo.write(0);
Sabes que me confundí.
servowrite(0);
no tiene nada que ver con
servo.attach(0);
Acá estan los dos códigos juntos, a ver como se comportan
#include <Arduino.h>
#include <Servo.h>
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);
char DB;
int led1 = 3;
int led2 = 4;
int led3 = 5;
int led4 = 6;
int led5 = 7;
int led6 = 8;
boolean onled1 = LOW;
boolean onled2 = LOW;
boolean onled3 = LOW;
boolean onled4 = LOW;
boolean onled5 = LOW;
boolean onled6 = LOW;
Servo servo;
int dato = 0;
void setup() {
BT.begin(9600);
Serial.begin(9600);
servo.attach(9);
servo.write(2);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
digitalWrite(led1, 0);
digitalWrite(led2, 0);
digitalWrite(led3, 0);
digitalWrite(led4, 0);
digitalWrite(led5, 0);
digitalWrite(led6, 0);
}
void loop() {
if (BT.available()) {
DB = BT.read();
Serial.println(DB);
switch (DB) {
case '0': servo.write(2);
BT.print("0 grados");
BT.println("-->[Posicion Minima]");
break;
case '9': servo.write(90);
BT.println("90 grados");
break;
case 'I': servo.write(180);
BT.println("360 grados");
break;
case 'a':
onled1 = !onled1;
digitalWrite(led1, onled1 ? HIGH : LOW);
break;
case 'b':
onled2 = !onled2;
digitalWrite(led2, onled2 ? HIGH : LOW);
break;
case 'c':
onled3 = !onled3;
digitalWrite(led3, onled3 ? HIGH : LOW);
break;
case 'd':
onled4 = !onled4;
digitalWrite(led4, onled4 ? HIGH : LOW);
break;
case 'e':
onled5 = !onled5;
digitalWrite(led5, onled5 ? HIGH : LOW);
break;
case 'f':
onled6 = !onled6;
digitalWrite(led6, onled6 ? HIGH : LOW);
break;
}
}
}
1 Like
Funciona a la perfección, muchas gracias, te agradezco demasiado, eres un grande!.
system
Closed
September 17, 2023, 7:36pm
6
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.