Freeduino 2009 + Motor Shield + Джойстик + замок

RoDJeR
Offline
Зарегистрирован: 06.02.2014

Добрый вечер!

Есть плата Freeduino 2009 http://freeduino.ru/arduino/freeduino2009.html

Motor Shield http://www.freeduino.ru/arduino/mshield.html

4х позиционный джойстик без фиксации отдаленно напоминает http://www.quartz1.com/price/model.php?group=15018&ext=10519

и замок $T2eC16JHJHsFGlGzglvJBR-8KwMmFQ~~60_12.J

Необходимо с помощью джойстика переключать замок. Питание подается внешнее на плату Motor Shield 12V

Написал код для проверки замка, все работает

#include <AFMotor.h>

AF_DCMotor motor(3);
int led = 13;

void setup() {
   pinMode(led, OUTPUT);
   Serial.begin(9600);

}

void loop() 
{ 
  motor.setSpeed(255);
  motor.run(FORWARD);
  delay(150);
  motor.run(RELEASE);
  delay(2);
  motor.setSpeed(255);
  motor.run(BACKWARD);
  delay(150);
  motor.run(RELEASE);
}

Но когда пытаюсь первоначально считать сигнал с джойстика, а потом переключить замок ничего не выходит(((

#include <AFMotor.h>

AF_DCMotor motor(3);
//int led = 13;

void setup() {
  pinMode(2, INPUT);     
  digitalWrite(2, HIGH); 
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
  pinMode(4, INPUT);
  digitalWrite(4, HIGH);
  pinMode(5, INPUT);
  digitalWrite(5, HIGH);
//  Serial.begin(9600);
//  pinMode(led, OUTPUT);
//  motor.setSpeed(128);
}

void loop() 
{
  if (digitalRead(2) != LOW) 
  {
    delay(1);
    Serial.write(87); 
    //Serial.println("UP");

//  Serial.println("Motor test!");
  motor.setSpeed(255);
  motor.run(FORWARD);
  delay(1050);
  motor.run(RELEASE);
  delay(2);
  motor.setSpeed(255);
  motor.run(BACKWARD);
  delay(1050);
  motor.run(RELEASE);
  delay(2);
  }
}

в коде описано только одно движение джойстика вверх.

Надеюсь на Вашу помощь

RoDJeR
Offline
Зарегистрирован: 06.02.2014

Я уже разобрался.

#include <AFMotor.h>

AF_DCMotor motor(3);
int led = 13;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  Serial.begin(9600);

}

void loop() 
{
  if (digitalRead(2)==LOW) {
    motor.setSpeed(255);
    motor.run(BACKWARD);
    delay(150);
    motor.run(RELEASE);
    delay(2);
  }
  if (digitalRead(3)==LOW) {
    motor.setSpeed(255);
    motor.run(FORWARD);
    delay(150);
    motor.run(RELEASE);
    delay(2);
  }
}