Gondol át újra az egészet!
Mert most minden olyan else ág mindig végrehajtódik, ahol nincsen megnyomva a gomb.
Arduino programozás segítség
Re: Arduino programozás segítség
Üdv! Segítséget szeretnék kérni! Arduino megea 2560, két nyomómbbal szervó vezérlés. (Vasútmodell váltó vezérlés) Egy nyomógom-párral tökéletesen működik. Megpróbáltam kiterjeszteni két nyomógomb-párra, de a fordításnál állandóan hibaüzenetet kapok. Már minden tőlem telhetőt kipróbáltam, de nem tudom megszüntetni a problémát. Az eredeti (működi kód):
#include <Servo.h> // add servo library
#define sw1_pin 5
#define sw2_pin 6
Servo myservo; // create servo object to control a servo
volatile boolean sw1 = false;
volatile boolean sw2 = false;
uint8_t sw1ButtonState = 0;
uint8_t sw2ButtonState = 0;
uint8_t lastsw1ButtonState = 0;
uint8_t lastsw2ButtonState = 0;
void setup() {
pinMode(sw1_pin, INPUT_PULLUP);
pinMode(sw2_pin, INPUT_PULLUP);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
checkIfSw1ButtonIsPressed();
checkIfSw2ButtonIsPressed();
if( sw1){
sw1 = false;
myservo.write(75);
delay(15);
}
else if( sw2){
sw2 = false;
myservo.write(105);
delay(15);
}
// waits for the servo to get there
}
void checkIfSw1ButtonIsPressed()
{
sw1ButtonState = digitalRead(sw1_pin);
if (sw1ButtonState != lastsw1ButtonState)
{
if ( sw1ButtonState == 0)
{
sw1=true;
}
delay(50);
}
lastsw1ButtonState = sw1ButtonState;
}
void checkIfSw2ButtonIsPressed()
{
sw2ButtonState = digitalRead(sw2_pin);
if (sw2ButtonState != lastsw2ButtonState)
{
if ( sw2ButtonState == 0)
{
sw2=true;
}
delay(50);
}
lastsw2ButtonState = sw2ButtonState;
}
#include <Servo.h> // add servo library
#define sw1_pin 5
#define sw2_pin 6
Servo myservo; // create servo object to control a servo
volatile boolean sw1 = false;
volatile boolean sw2 = false;
uint8_t sw1ButtonState = 0;
uint8_t sw2ButtonState = 0;
uint8_t lastsw1ButtonState = 0;
uint8_t lastsw2ButtonState = 0;
void setup() {
pinMode(sw1_pin, INPUT_PULLUP);
pinMode(sw2_pin, INPUT_PULLUP);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
checkIfSw1ButtonIsPressed();
checkIfSw2ButtonIsPressed();
if( sw1){
sw1 = false;
myservo.write(75);
delay(15);
}
else if( sw2){
sw2 = false;
myservo.write(105);
delay(15);
}
// waits for the servo to get there
}
void checkIfSw1ButtonIsPressed()
{
sw1ButtonState = digitalRead(sw1_pin);
if (sw1ButtonState != lastsw1ButtonState)
{
if ( sw1ButtonState == 0)
{
sw1=true;
}
delay(50);
}
lastsw1ButtonState = sw1ButtonState;
}
void checkIfSw2ButtonIsPressed()
{
sw2ButtonState = digitalRead(sw2_pin);
if (sw2ButtonState != lastsw2ButtonState)
{
if ( sw2ButtonState == 0)
{
sw2=true;
}
delay(50);
}
lastsw2ButtonState = sw2ButtonState;
}
Re: Arduino programozás segítség
A kiterjesztett verzió:
#include <Servo.h>;
Servo myservo1, myservo2, myservo3;
const int sw1_pin = 22;
const int sw2_pin = 23;
const int sw3_pin = 24;
const int sw4_pin = 25;
volatile boolean sw1 = false;
volatile boolean sw2 = false;
volatile boolean sw3 = false;
volatile boolean sw4 = false;
uint8_t sw1ButtonState = 0;
uint8_t sw2ButtonState = 0;
uint8_t sw3ButtonState = 0;
uint8_t sw4ButtonState = 0;
uint8_t lastsw1ButtonState = 0;
uint8_t lastsw2ButtonState = 0;
uint8_t lastsw3ButtonState = 0;
uint8_t lastsw4ButtonState = 0;
void setup() {
pinMode(sw1_pin, INPUT_PULLUP);
pinMode(sw2_pin, INPUT_PULLUP);
pinMode(sw3_pin, INPUT_PULLUP);
pinMode(sw4_pin, INPUT_PULLUP);
myservo1.attach(2); // attaches the servo on pin 9 to the servo object
myservo1.attach(3);
myservo1.attach(4);
}
void loop() {
checkIfSw1ButtonIsPressed();
checkIfSw2ButtonIsPressed();
if( sw1){
sw1 = false;
myservo1.write(60);
delay(15);
}
else if( sw2){
sw2 = false;
myservo1.write(105);
delay(15);
}
// waits for the servo to get there
}
void checkIfSw1ButtonIsPressed()
{
sw1ButtonState = digitalRead(sw1_pin);
if (sw1ButtonState != lastsw1ButtonState)
{
if ( sw1ButtonState == 0)
{
sw1=true;
}
delay(50);
}
lastsw1ButtonState = sw1ButtonState;
}
void checkIfSw2ButtonIsPressed()
{
sw2ButtonState = digitalRead(sw2_pin);
if (sw2ButtonState != lastsw2ButtonState)
{
if ( sw2ButtonState == 0)
{
sw2=true;
}
delay(50);
}
lastsw2ButtonState = sw2ButtonState;
}
checkIfSw3ButtonIsPressed(); // Itt jelzi a problémát!!!
checkIfSw4ButtonIsPressed();
if( sw3){
sw3 = false;
myservo2.write(60);
myservo3.write(60);
delay(15);
}
else if( sw4){
sw4 = false;
myservo2.write(105);
myservo3.write(105);
delay(15);
}
// waits for the servo to get there
void checkIfSw3ButtonIsPressed()
{
sw3ButtonState = digitalRead(sw3_pin);
if (sw3ButtonState != lastsw3ButtonState)
{
if ( sw3ButtonState == 0)
{
sw3=true;
}
delay(50);
}
lastsw3ButtonState = sw3ButtonState;
}
void checkIfSw4ButtonIsPressed()
{
sw4ButtonState = digitalRead(sw4_pin);
if (sw4ButtonState != lastsw4ButtonState)
{
if ( sw4ButtonState == 0)
{
sw4=true;
}
delay(50);
}
lastsw4ButtonState = sw4ButtonState;
}
Ha valaki tud, kérem segítsen!!
#include <Servo.h>;
Servo myservo1, myservo2, myservo3;
const int sw1_pin = 22;
const int sw2_pin = 23;
const int sw3_pin = 24;
const int sw4_pin = 25;
volatile boolean sw1 = false;
volatile boolean sw2 = false;
volatile boolean sw3 = false;
volatile boolean sw4 = false;
uint8_t sw1ButtonState = 0;
uint8_t sw2ButtonState = 0;
uint8_t sw3ButtonState = 0;
uint8_t sw4ButtonState = 0;
uint8_t lastsw1ButtonState = 0;
uint8_t lastsw2ButtonState = 0;
uint8_t lastsw3ButtonState = 0;
uint8_t lastsw4ButtonState = 0;
void setup() {
pinMode(sw1_pin, INPUT_PULLUP);
pinMode(sw2_pin, INPUT_PULLUP);
pinMode(sw3_pin, INPUT_PULLUP);
pinMode(sw4_pin, INPUT_PULLUP);
myservo1.attach(2); // attaches the servo on pin 9 to the servo object
myservo1.attach(3);
myservo1.attach(4);
}
void loop() {
checkIfSw1ButtonIsPressed();
checkIfSw2ButtonIsPressed();
if( sw1){
sw1 = false;
myservo1.write(60);
delay(15);
}
else if( sw2){
sw2 = false;
myservo1.write(105);
delay(15);
}
// waits for the servo to get there
}
void checkIfSw1ButtonIsPressed()
{
sw1ButtonState = digitalRead(sw1_pin);
if (sw1ButtonState != lastsw1ButtonState)
{
if ( sw1ButtonState == 0)
{
sw1=true;
}
delay(50);
}
lastsw1ButtonState = sw1ButtonState;
}
void checkIfSw2ButtonIsPressed()
{
sw2ButtonState = digitalRead(sw2_pin);
if (sw2ButtonState != lastsw2ButtonState)
{
if ( sw2ButtonState == 0)
{
sw2=true;
}
delay(50);
}
lastsw2ButtonState = sw2ButtonState;
}
checkIfSw3ButtonIsPressed(); // Itt jelzi a problémát!!!
checkIfSw4ButtonIsPressed();
if( sw3){
sw3 = false;
myservo2.write(60);
myservo3.write(60);
delay(15);
}
else if( sw4){
sw4 = false;
myservo2.write(105);
myservo3.write(105);
delay(15);
}
// waits for the servo to get there
void checkIfSw3ButtonIsPressed()
{
sw3ButtonState = digitalRead(sw3_pin);
if (sw3ButtonState != lastsw3ButtonState)
{
if ( sw3ButtonState == 0)
{
sw3=true;
}
delay(50);
}
lastsw3ButtonState = sw3ButtonState;
}
void checkIfSw4ButtonIsPressed()
{
sw4ButtonState = digitalRead(sw4_pin);
if (sw4ButtonState != lastsw4ButtonState)
{
if ( sw4ButtonState == 0)
{
sw4=true;
}
delay(50);
}
lastsw4ButtonState = sw4ButtonState;
}
Ha valaki tud, kérem segítsen!!
Re: Arduino programozás segítség
Igy lefordul! Ha csak ennyi volt a baj?
Kód: Egész kijelölése
//A kiterjesztett verzió:
#include <Servo.h>
Servo myservo1, myservo2, myservo3;
const int sw1_pin = 22;
const int sw2_pin = 23;
const int sw3_pin = 24;
const int sw4_pin = 25;
volatile boolean sw1 = false;
volatile boolean sw2 = false;
volatile boolean sw3 = false;
volatile boolean sw4 = false;
uint8_t sw1ButtonState = 0;
uint8_t sw2ButtonState = 0;
uint8_t sw3ButtonState = 0;
uint8_t sw4ButtonState = 0;
uint8_t lastsw1ButtonState = 0;
uint8_t lastsw2ButtonState = 0;
uint8_t lastsw3ButtonState = 0;
uint8_t lastsw4ButtonState = 0;
void setup() {
pinMode(sw1_pin, INPUT_PULLUP);
pinMode(sw2_pin, INPUT_PULLUP);
pinMode(sw3_pin, INPUT_PULLUP);
pinMode(sw4_pin, INPUT_PULLUP);
myservo1.attach(2); // attaches the servo on pin 9 to the servo object
myservo1.attach(3);
myservo1.attach(4);
}
void loop() {
checkIfSw1ButtonIsPressed();
checkIfSw2ButtonIsPressed();
if( sw1){
sw1 = false;
myservo1.write(60);
delay(15);
}
else if( sw2){
sw2 = false;
myservo1.write(105);
delay(15);
}
// waits for the servo to get there
}
void checkIfSw1ButtonIsPressed()
{
sw1ButtonState = digitalRead(sw1_pin);
if (sw1ButtonState != lastsw1ButtonState)
{
if ( sw1ButtonState == 0)
{
sw1=true;
}
delay(50);
}
lastsw1ButtonState = sw1ButtonState;
}
void checkIfSw2ButtonIsPressed()
{
sw2ButtonState = digitalRead(sw2_pin);
if (sw2ButtonState != lastsw2ButtonState)
{
if ( sw2ButtonState == 0)
{
sw2=true;
}
delay(50);
}
lastsw2ButtonState = sw2ButtonState;
//}
checkIfSw3ButtonIsPressed(); // Itt jelzi a problémát!!!
checkIfSw4ButtonIsPressed();
if( sw3){
sw3 = false;
myservo2.write(60);
myservo3.write(60);
delay(15);
}
else if( sw4){
sw4 = false;
myservo2.write(105);
myservo3.write(105);
delay(15);
}
}
// waits for the servo to get there
void checkIfSw3ButtonIsPressed()
{
sw3ButtonState = digitalRead(sw3_pin);
if (sw3ButtonState != lastsw3ButtonState)
{
if ( sw3ButtonState == 0)
{
sw3=true;
}
delay(50);
}
lastsw3ButtonState = sw3ButtonState;
}
void checkIfSw4ButtonIsPressed()
{
sw4ButtonState = digitalRead(sw4_pin);
if (sw4ButtonState != lastsw4ButtonState)
{
if ( sw4ButtonState == 0)
{
sw4=true;
}
delay(50);
}
lastsw4ButtonState = sw4ButtonState;
}