Help! Расскажите новичку как программировать джойстик.

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Самоделкин, 19 сен 2016.

  1. Не умею программировать, но учусь по примерам. Помогите пожалуйста написать программу (для управления манипулятором с джойстика)!:)
    Я подключил джойстик как на вики. К портам А0-А3. К порту Р5 подключил светодиод (чтобы светил при нажатии на Z), к порту Р6 и Р7 сервоприводы (для вращения при наклоне джойстика по X И Y). Прописал только подключенные устройства, а дальше и не знаю как прописать работу джойстика.
    Подкорректируйте и дополните пожалуйста мои написульки и если не сложно поясните что к чему. И нужно ли какую-нибудь библиотеку к джойстику качать?
    Вот начало:

    var led = require ('@amperka/led').connect(P5);

    var servo = require ('@amperka/servo').connect(P6);

    var servo2 = require ('@amperka/servo').connect(P7);

    #define X A0
    #define Y A1
    #define Z A2

    void setup()
    {
    Serial.begin(9600);
    }
    void loop()
    {

    int x, y, z;

    x = analogRead(X);
    y = analogRead(Y);
    z = digitalRead(Z);

    Serial.print(x);
    Serial.print(",");
    Serial.print(y);
    Serial.print(",");
    Serial.println(z);
    delay(100);
    }
     
  2. acos

    acos Официальный гик Администратор

    Смешались в кучу кони, люди:)

    Код (Javascript):

    var servo = require ('@amperka/servo').connect(P6, {valueMin:0, valueMax:1});

    var servo2 = require ('@amperka/servo').connect(P7, {valueMin:0, valueMax:1});

    setInterval(function() {
        servo.write(analogRead(A0));
        servo2.write(analogRead(A1));
    }, 100);

     
    http://wiki.amperka.ru/js:start - там описание всех модулей и функций с примерами кода

    http://files.amperka.ru/store-media/products/yodo/media/yodo-book.pdf - с картинками)

    http://learn.javascript.ru/
     
    Самоделкин нравится это.

  3. Спасибо! Я прописал так, но теперь при загрузке на плату пишет:

    ERROR: Prompt not detected - upload failed. Trying to recover... и "BUSY" горит постоянно.
     
  4. acos

    acos Официальный гик Администратор

  5. Я прошил плату, но всё равно какие-то ошибки выдает.... :( в таком роде

    Or pins with DAC output are:
    A4 A5
    You can also use analogWrite(pin, val, {soft:true}) for Software PWM on this pin
    ERROR: Pin C2 is not capable of PWM Output
    Suitable pins are:
    A0 A1 A2 A3 A6 A7 A8 A9 A10
    A11 B0 B1 B3 B4 B5 B6 B7 B8
    B9 B10 B11 B13 B14 B15 C6 C7 C8
    C9
    Or pins with DAC output are:
    A4 A5
    You can also use analogWrite(pin, val, {soft:true}) for Software PWM on this pin
    ERROR: Pin C2 is not capable of PWM Output
     
  6. vvr

    vvr Инженерище

  7. vvr

    vvr Инженерище

  8. Спасибо! Но у меня. Искра. Мне джава скрипт нужен
     
  9. vvr

    vvr Инженерище

    пардон, не туда сунулся спросоня )))))
     
  10. acos

    acos Официальный гик Администратор

    А... да. Поменяйте серву с P7 на любой другой. А то вы выбрали единственный без PWM:)
    Серва для работы использует ШИМ. Ножки, умеющие ШИМ обозначены знаком "~"

    Код (Javascript):

    var servo = require ('@amperka/servo').connect(P6, {valueMin:0, valueMax:1});

    var servo2 = require ('@amperka/servo').connect(P8, {valueMin:0, valueMax:1});

    setInterval(function() {
        servo.write(analogRead(A0));
        servo2.write(analogRead(A1));
    }, 100);
     
     
  11. Вот только это просёк! Я к аналоговым подключал его, теперь перенёс на Р9 и Р8 серваки и заработало! :)
    Теперь осталось бы светодиод прописать. Я его так написал, вроде должно работать, но серваки начинают судорожно трестись и светодиод мигать и плата то отключается, то подключается.
    Помогите ещё с этим разобраться!:)

    var servo = require ('@amperka/servo').connect(P8,{valueMin:0, valueMax:1});

    var servo2 = require ('@amperka/servo').connect(P9,{valueMin:0, valueMax:1});

    var led = require ('@amperka/led').connect(P10).turnOn();

    setInterval(function() {
    servo.write(analogRead(A0));
    servo2.write(analogRead(A1));
    }, 100);

    setInterval(function() {
    led.brightness(digitalRead(A2));
    }, 100);