консультация по ардуино

Тема в разделе "Флудилка", создана пользователем CYITEP_BAC9I, 21 мар 2017.

  1. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    продолжаю свой блог. сегодня отличный день, на улице 40 тепла. сходил накупался).
    спасибо что помогли решить загвоздку с вычислением енергии) .
    частично понял причину. с этим я уже сталкивался, здесь то же самое. комплилятору нужно явно указвать тип и разрядность переменных, иначе он начинает вычислять количиство осадков на марсе.
    тут конечно перебор с объявлением float, но лучше уж наверняка. (хотя может лучше double?)
    Код (C++):
    Energy =(float(  bullets_weight* float sq(Speed))*0.5);//
    Страуструп рулит!. Все!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    игрушку закончил и отладил!!! Сбоев и ложных срабатываний нет! чуйка отменная, уверенно ловит частички 1.5 мм в диаметре! адекватно вычисляет скорость и энергию и сохраняет их. отлично тестируется. убрал все delay из индикации. точность измерения 0,1 м/с (тут странно микросекунды при захвате события с датчиков явно кратны 8)
    пришли нормальные фототранзисторы L-53P3C. это что то! посли китайской каки прямо сказка, разброс характеристик минимален. чувствительность тоже в широком диапазоне. Но пока менять не буду, все подстроил уже под китайские и тревожить не хочу. как будет появлятся время выложу в основной теме рамочного хронографа. Всем спасибо! с рамочным хроном ВСЕ!!! (или почти все)
     
  2. ostrov

    ostrov Гуру

    Переполнение?
     
  3. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    каk ни странно но похоже что да. хотя int должно было вполне хватать. но дело скорее всего в arduino IDEне так, как в книжке про С++ "нописоно", что если хоть однин член математического выражения число с запятой. все остальные автоматом становятся, того же типа. а в компиляторе ардуиновском, видно надо насильно компилятор тыкать носом что все члены выражения имеют тип float или double иначе получается всякая ерунда ИМХО.
    про Авиагоризонт, почитал посмотрел про электронные гироскопы. что то печаль. они все равно уходят с горизонта после нескольких вращений. нашел вот такой ADIS16405BMLZ с самотестирование и калибровкой, но это другая ценовая категория). а вообще для этих целей лучше старого механического гироскопа сложно что то придумать.
     
  4. mcureenab

    mcureenab Гуру

    Арифметические операторы левоассоциативны. Тип оператора ( целочисленный или float) определяется левым операндом.

    В большом выражении накладывается приоритет операций и скобки.
     
    CYITEP_BAC9I нравится это.
  5. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    тут думаю над следующим интересным проектом. параллельно решил выполнить " обязательную" программу Ардуинщика. Замок на RFID метках. От него возможна практическая польза, в виде электронного замка входной двери? или максимум удел такой поделки, закрытие ящичка с носками). доверили бы вы квартиру такому замку?
     
  6. Jester

    Jester Нуб

    Привет всем. Соединил две ардуино через nrf24l01 . К одной подключил серву к другой джойстик. При включении системы серву начинает колбасить. В чем может быть проблема?

    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    RF24 radio(7, 8); // CSN, CE
    const byte address[6] = "00001";

    int x_key = A1;
    int y_key = A0;
    int x_pos;
    int y_pos;

    void setup() {
    radio.begin();
    radio.openWritingPipe(address);
    radio.setPALevel(RF24_PA_MIN);
    radio.stopListening();

    pinMode (x_key, INPUT) ;
    pinMode (y_key, INPUT) ;
    }

    void loop() {
    x_pos = analogRead (x_key) ;
    y_pos = analogRead (y_key) ;
    radio.write(&x_pos, sizeof(x_pos));
    delay(100);
    }

    Код для приемника
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Servo.h>
    Servo servo;
    RF24 radio(7, 8); // CSN, CE
    const byte address[6] = "00001";
    int servo_pin = 6;

    void setup() {
    Serial.begin(9600);
    radio.begin();
    servo.attach (servo_pin ) ;
    radio.openReadingPipe(0, address);
    radio.setPALevel(RF24_PA_MIN);
    radio.startListening();
    }

    void loop() {
    if (radio.available()) {
    int x_pos ;
    radio.read(&x_pos, sizeof(x_pos));
    Serial.println(x_pos);
    x_pos = map(x_pos, 0, 1023, 0, 180);
    if (x_pos>400 && x_pos<600)
    {

    }
    else{
    servo.write (x_pos) ;
    }
    }
    }
     
  7. Un_ka

    Un_ka Гуру

    Пожалуйста оформите код кнопочкой <>.
    Вызывать расколбас сервомашинки могут:
    • Выход угла подаваемого функцию write за диапазон 0-180. Но у вас скорее всё в этом деле нормально.
    • Слишком частый вызов функции write, чаще чем каждые две с половиной миллисекунды.
    • Постоянно меняющаяся углы это может быть вызвано никуда не подключённым аналоговым входом на передающей стороне.
     
  8. Jester

    Jester Нуб

    Код (C++):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    RF24 radio(7, 8); // CSN, CE
    const byte address[6] = "00001";

    int x_key = A1;                                              
    int y_key = A0;                                              
    int x_pos;
    int y_pos;

    void setup() {
      radio.begin();
      radio.openWritingPipe(address);
      radio.setPALevel(RF24_PA_MIN);
      radio.stopListening();

      pinMode (x_key, INPUT) ;                    
      pinMode (y_key, INPUT) ;  
    }

    void loop() {
      x_pos = analogRead (x_key) ;
      y_pos = analogRead (y_key) ;  
      radio.write(&x_pos, sizeof(x_pos));
      delay(100);
    }

       
    Код для приемника
           
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Servo.h>
    Servo servo;
    RF24 radio(7, 8); // CSN, CE
    const byte address[6] = "00001";
    int servo_pin = 6;

    void setup() {
      Serial.begin(9600);
      radio.begin();
      servo.attach (servo_pin ) ;
      radio.openReadingPipe(0, address);
      radio.setPALevel(RF24_PA_MIN);
      radio.startListening();
    }

    void loop() {
      if (radio.available()) {
        int x_pos ;
        radio.read(&x_pos, sizeof(x_pos));
        Serial.println(x_pos);
        x_pos = map(x_pos, 0, 1023, 0, 180);
        if (x_pos>400 && x_pos<600)
        {
         
        }
        else{
        servo.write (x_pos) ;
        }
      }
    }
     
     
  9. Jester

    Jester Нуб

    привет. есть две ардуино соединенные NRF24L01, для того чтобы управлять серво и L298N. Проблема: двигатель, подключенный к драйверу не крутится. В чем может быть причина?
    Код (C++):
    //ПРИЕМНИК
    #include <Servo.h>
    #include <SPI.h>
    #include "RF24.h"
    Servo servo1;
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int msg[1];
    int data;
    int pos;
    int fspeed;        
    int bspeed;          
    const int in1 = 2;  
    const int in2 = 4;  
    const int ena = 5;  
    void setup(){
    pinMode(in1, OUTPUT);    
    pinMode(in2, OUTPUT);    
    pinMode(ena, OUTPUT);
    servo1.attach(3);

    radio.begin();
    radio.openReadingPipe(1,pipe);
    radio.startListening();
    }
    void loop(){

    if (radio.available())radio.read(msg, 1);
    if (msg[0] <128 && msg[0] >-1)data = msg[0], pos = map(data, 0, 127, 7, 177),servo1.write(pos);
    if (msg[0] >129 && msg[0] <189)data = msg[0], fspeed = map(data, 189, 129, 0, 255); forward(fspeed);
    if (msg[0] >201 && msg[0] <255)data = msg[0], bspeed = map(data, 255, 201, 0, 255); backward(bspeed);
    if (msg[0] >190 && msg[0] <200)data = msg[0], stop();
    }

    void stop(){
    analogWrite(ena, 0);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    }

     

      void forward(int fspeed){
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    analogWrite(ena, fspeed);
    }

     

    void backward(int bspeed){
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    analogWrite(ena, bspeed);
    }

    //ПЕРЕДАТЧИК
    #include <SPI.h>
    #include "RF24.h"
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int msg[1];
    int potpin_1 = A0;
    int val_1;
    int potpin_2 = A2;
    int val_2;
    void setup(void){
    radio.begin();
    radio.openWritingPipe(pipe);
    }
    void loop() {
    val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1);
    val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[0] = val_2,radio.write(msg, 1);
    }
     
  10. parovoZZ

    parovoZZ Гуру

    Причин может быть столько, что лучше обзавестись диагностическим оборудованием и выяснить самому, что да как. Действовать лучше поэтапно: выяснить сперва работает ли самостоятельно двигатель при управлении им с МК. Далее отладить связь по радиоканалу. А уже потом отлаживать протокол взаимодействия по радио.
    Для инициализации nRF24l01 на стороне приёмника и передатчика я использую такую рыбу:
    Код (C++):
        //.. Инициализация трансивера
    void nRF_Init(void)
    {
         uint8_t Buf[5];

        //.. CONFIG
        Buf[0] =    (0<<nRF_MASK_RX_DR) | (0<<nRF_MASK_TX_DS) | (0<<nRF_MASK_MAX_RT) |    // маски прерываний от событий
    #if (!DIMMER)
            (0<<nRF_PRIM_RX) |                                // Режим передатчика
    #else
            (1<<nRF_PRIM_RX) |                                // Режим приемника
    #endif
            (1<<nRF_EN_CRC) | (0<<nRF_CRCO) |                // Проверка CRC разрешена, 1 байт CRC
            (1<<nRF_PWR_UP);                                // Запускаем трансивер
        SPI_WriteArray(nRF_WR_REG(nRF_CONFIG), 1, Buf);        // Отправляем команду. Пин CSN удерживается внутри функции

        //.. RF_CH  Настройка канала
        Buf[0] = nRF_channel;                                // Установка частоты канала передачи
        SPI_WriteArray(nRF_WR_REG(nRF_RF_CH), 1, Buf);        // см. Global_Settings.h

        //.. RF_SETUP  Настройки радиоканала
        Buf[0] = (0<<nRF_RF_DR) | ((0x03)<<nRF_RF_PWR0);    // Скорость передачи 1 Mbps, мощность: 0dbm
        SPI_WriteArray(nRF_WR_REG(nRF_RF_SETUP), 1, Buf);      
       
        Buf[1] = RX_ADDR_msb;                  
        Buf[2] = RX_ADDR_msb;
        Buf[3] = RX_ADDR_msb;
        Buf[4] = RX_ADDR_msb;

    #if (DIMMER)                // Если приемник
        //.. RX_ADDR_P0  Адрес канала 0 приемника
        Buf[0] = RX_ADDR_P0;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P0), 5, Buf);
    /*
        //.. RX_ADDR_P1  Адрес канала 1 приемника
        Buf[0] = RX_ADDR_P1;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P1), 5, Buf);

        //.. RX_ADDR_P2  Адрес канала 2 приемника
        Buf[0] = RX_ADDR_P2;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P2), 1, Buf);

        //.. RX_ADDR_P3  Адрес канала 3 приемника
        Buf[0] = RX_ADDR_P3;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P3), 1, Buf);

        //.. RX_ADDR_P4  Адрес канала 4 приемника
        Buf[0] = RX_ADDR_P4;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P4), 1, Buf);

        //.. RX_ADDR_P5  Адрес канала 5 приемника
        Buf[0] = RX_ADDR_P5;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P5), 1, Buf);
    */

        //.. FEATURE  Опции
        Buf[0] = (1<<nRF_EN_DPL) | (1<<nRF_EN_ACK_PAY);                // Разрешаем данные
        SPI_WriteArray(nRF_WR_REG(nRF_FEATURE), 1, Buf);            // переменной длины

        //.. EN_AA  Автоматическая отправка ACK о приеме данных по каналу
        Buf[0] = (1<<nRF_ENAA_P0);
        SPI_WriteArray(nRF_WR_REG(nRF_EN_AA), 1, Buf);

        //.. DYNPD  Прием данных переменной длины
        Buf[0] = (1<<nRF_DPL_P0);
        SPI_WriteArray(nRF_WR_REG(nRF_DYNPD), 1, Buf);

        //.. EN_RXADDR  Используемые каналы приемника
        Buf[0] = (1<<nRF_ERX_P0);
        SPI_WriteArray(nRF_WR_REG(nRF_EN_RXADDR), 1, Buf);

    /*    //.. Длина принимаемых данных по каналам
        Buf[0] = nRF_SEND_LEN;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P0), 1, Buf);
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P1), 1, Buf);
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P2), 1, Buf);
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P3), 1, Buf);
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P4), 1, Buf);
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P5), 1, Buf);*/

    #endif

    #if (!DIMMER)                                                // Если кнопка
        //.. RX_ADDR_P0  Адрес канала 0 приемника
        Buf[0] = RX_ADDR;                                        // На этот адрес будут приходить ACK пакеты
        SPI_WriteArray(nRF_WR_REG(nRF_RX_ADDR_P0), 5, Buf);

        //.. TX_ADDR  Адрес канала удаленного приемника
        SPI_WriteArray(nRF_WR_REG(nRF_TX_ADDR), 5, Buf);        // Адрес канала премника, на который будут уходить пакеты

        //.. EN_RXADDR  Используемые каналы приемника. На канале 0 принимается пакет автоподтверждения
        Buf[0] = (1<<nRF_ERX_P0)|(0<<nRF_ERX_P1)|(0<<nRF_ERX_P2)|(0<<nRF_ERX_P3)|(0<<nRF_ERX_P4)|(0<<nRF_ERX_P5);
        SPI_WriteArray(nRF_WR_REG(nRF_EN_RXADDR), 1, Buf);
    /*
        //.. Длина принимаемых данных по каналам
        Buf[0] = nRF_ACK_LEN;
        SPI_WriteArray(nRF_WR_REG(nRF_RX_PW_P0), 1, Buf);
    */
         
        //.. SETUP_RETR  Настройка автоподтверждения
        Buf[0] = nRF_REPEAT_INTERVAL | nRF_REPEAT_MAX;            // Автоподтверждение и интервал повтора
        SPI_WriteArray(nRF_WR_REG(nRF_SETUP_RETR), 1, Buf);        // смотреть Settings.h

        //.. FEATURE  Опции
        Buf[0] = (1<<nRF_EN_DPL) | (1<<nRF_EN_ACK_PAY);            // Разрешаем прием данных
        SPI_WriteArray(nRF_WR_REG(nRF_FEATURE), 1, Buf);        // переменной длины

        //.. DYNPD  Прием данных переменной длины
        Buf[0] = (1<<nRF_DPL_P0)|(0<<nRF_DPL_P1)|(0<<nRF_DPL_P2)|(0<<nRF_DPL_P3)|(0<<nRF_DPL_P4)|(0<<nRF_DPL_P5);
        SPI_WriteArray(nRF_WR_REG(nRF_DYNPD), 1, Buf);

        //.. EN_AA  Автоматическая отправка ACK о приеме данных по каналу
    //    Buf[0] = (1<<nRF_ENAA_P0)|(0<<nRF_ENAA_P1)|(0<<nRF_ENAA_P2)|(0<<nRF_ENAA_P3)|(0<<nRF_ENAA_P4)|(0<<nRF_ENAA_P5);
    //    SPI_WriteArray(nRF_WR_REG(nRF_EN_AA), 1, Buf);

    #endif
    Работает сразу.
     
  11. Un_ka

    Un_ka Гуру


    Global_Settings.h откуда брать?
     
  12. parovoZZ

    parovoZZ Гуру

    Выглядеть он может так:
    Код (C++):
     #ifndef GLOBAL_SETTINGS_H_
    #define GLOBAL_SETTINGS_H_

        //.. Настройки трансивера
    #define    RX_ADDR_msb        0xC2        // Значения адреса для BYTE4..1
    #define    RX_ADDR_P0        0xC1        // Значение младшего байта для PIPE0
    #define    RX_ADDR_P1        0xC2        // Значение младшего байта для PIPE1
    #define    RX_ADDR_P2        0xC3        // Значение младшего байта для PIPE2
    #define    RX_ADDR_P3        0xC4        // Значение младшего байта для PIPE3
    #define    RX_ADDR_P4        0xC5        // Значение младшего байта для PIPE4
    #define    RX_ADDR_P5        0xC6        // Значение младшего байта для PIPE5


    #if (DrumStick == 1)                // Настройки адресов передатчика на палке №1
        #define TX_ADDR        RX_ADDR_P0    // Адрес, на который будут отправляться пакеты
        #define RX_ADDR        RX_ADDR_P0    // Адрес. на который будут приниматься ACK пакеты

    #elif (DrumStick == 2)
        #define TX_ADDR        RX_ADDR_P1
        #define RX_ADDR        RX_ADDR_P1

    #elif (DrumStick == 3)
        #define TX_ADDR        RX_ADDR_P2
        #define RX_ADDR        RX_ADDR_P2

    #elif (DrumStick == 4)
        #define TX_ADDR        RX_ADDR_P3
        #define RX_ADDR        RX_ADDR_P3

    #elif (DrumStick == 5)
        #define TX_ADDR        RX_ADDR_P4
        #define RX_ADDR        RX_ADDR_P4
    #elif (DrumStick == 6)
        #define TX_ADDR        RX_ADDR_P5
        #define RX_ADDR        RX_ADDR_P5

    #endif


    #define nRF_channel        83            // Канал приемо-передачи

    #define nRF_SEND_LEN        1            // Длина пакета данных от палочки к MIDI контроллеру
    #define nRF_ACK_LEN        3            // Длина ACK пакета от MIDI контроллера к палочке


        //.. Для возможности выбора передатчика или приемника
    #define no            0

    #endif /* GLOBAL_SETTINGS_H_ */
    Эти два файла лежат в корневой директории для того, чтобы изменения применялись сразу для всех проектов в solution. Таким образом, исключается ошибка, когда для передатчика и приёмника применяются разные настройки. Ключевые слова заношу в глобальные символы:
    symbols.png
     
  13. Jester

    Jester Нуб

    здарова.Подскажите пожалуйста как дописать программную часть на L298N, чтобы управлять двигателем через джойстик по NRF24l01,а то я тут намудрил что то...
    Код (C++):
    //ПРИЕМНИК

    #include <Servo.h>
    #include <SPI.h>
    #include "RF24.h"
    Servo servo1;

    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int massiv[2];
    int enA = 5;
    int in1 = 2;
    int in2 = 4;
    int fspeed;        
    int bspeed;
    void setup()
    {
    pinMode(in1, OUTPUT);    
    pinMode(in2, OUTPUT);  
    pinMode(enA, OUTPUT);  
    servo1.attach(3);
    delay(50);
    radio.begin();
    radio.openReadingPipe(1,pipe);
    radio.startListening();
    }

    void loop(){

    if (radio.available()){
        radio.read(&massiv,sizeof (massiv));}

    servo1.write(map(massiv[0], 0, 126, 7,177 ));


    fspeed = map(massiv[1],189,129,0,255);
    bspeed = map(massiv[1],255,201,0,255);


    if(massiv[1]>52 && massiv[1]<76){
      digitalWrite(enA, 0);
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);}
    if(massiv[1]>77 && massiv[1]<128){

      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);
      digitalWrite(enA, fspeed);
    }
    if(massiv[1]>1 && massiv[1]<51){
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);
      digitalWrite(enA, bspeed);
    }
    }

    //ПЕРЕДАТЧИК
    #include <SPI.h>
    #include "RF24.h"
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int massiv[2];
    void setup(void){
    radio.begin();
    radio.openWritingPipe(pipe);
    }
    void loop() {

    massiv[0] = map (analogRead(A0),0,1023,0,127);
    massiv[1] = map (analogRead(A2),0,1023,128,255);
    radio.write(&massiv, sizeof(massiv));
    }
     
  14. Un_ka

    Un_ka Гуру

    Постоянно не надо посылать данные, а хотя бы 100 раз в секунду.
     
  15. Jester

    Jester Нуб

    Привет. У меня две ардуино подключены через нрф24. На одной джойстик на другой л298н с двигателем.
    Проблема при наклоне джойстика мотор стоит, кода джойстик в обычном положении двигатель крутится. когда наклонён в другую сторону движок ускоряется. Нужно чтобы он крутился вперёд назад при наклоне , а в обычном положении стоял. Помогите разобраться.
    Код (C++):
    //ПЕРЕДАТЧИК
    #include<SPI.h>
    #include "RF24.h"
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int massiv[2];
    void setup(void){
    radio.begin();
    radio.openWritingPipe(pipe);
    }
    void loop() {
    massiv[0] = map (analogRead(A1),0,1023,0,255);
    massiv[1] = analogRead(A2);
    radio.write(&massiv, sizeof(massiv));
    }
    //ПРИЕМНИК
    #include <Servo.h>
    #include<SPI.h>
    #include "RF24.h"
    #define JOY_DEADZONE 10
    #define MOTOR1_IN 5
    #define MOTOR1_PWM 6
    Servo servo1;
    RF24 radio(9,10);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int massiv[2];
    int joyMiddle;
    void setup(){
    pinMode(MOTOR1_IN, OUTPUT);
    pinMode(MOTOR1_PWM, OUTPUT);

    joyMiddle = massiv[1];
    servo1.attach(3);
    delay(50);
    radio.begin();
    radio.openReadingPipe(1,pipe);
    radio.startListening();
    }
    void loop(){
    if (radio.available()){
    radio.read(&massiv,sizeof (massiv));}
    servo1.write(map(massiv[0], 90, 180, 0,255));

    motorControl(massiv[1],MOTOR1_IN,MOTOR1_PWM);}
    void motorControl(int val, byte pinIN, byte pinPWM){
    if (val > joyMiddle + JOY_DEADZONE){

    val = map (val,joyMiddle,1023,0,255);
    analogWrite (pinPWM, val);
    digitalWrite (pinIN, 0);}
    else if (val < joyMiddle - JOY_DEADZONE){
    val = map(val,joyMiddle,0,255,0);
    analogWrite (pinPWM, val);
    digitalWrite (pinIN,1);}

    else {
    digitalWrite (pinIN, 0);
    digitalWrite (pinPWM, 0);}
     
     
  16. Un_ka

    Un_ka Гуру

    А какой джойстик используете?
    Попробуйте так:
    Код (C++):
    massiv[0] = map (analogRead(A1)-500,0,1023,0,255);
     
     
  17. b707

    b707 Гуру

    Jester, вы скока будете по разным форумам спамить? На сколько форумов вы уже выложили этот вопрос? - вам отвечают. а вы совершенно не читаете ответов. Нафига тогда выкладывать?
     
    Andrey12 нравится это.
  18. Airbus

    Airbus Радиохулиган Модератор

    Может он Чекер? Проверяет уровень знаний разных Форумов и их пользователей?
     
    Andrey12 нравится это.