#1 Проекты » Танк управление, ардуино, NRF24L01, l298n, готовый СКЕЧЬ для Вас » 2017-08-29 07:45:33

Миханик
відповідей: 0

сделал скечь (код) для управления танком как машинкой, то-есть:
джой вперед --- танк вперед
джой назад --- танк назад
джой влево --- танк влево
джой вправо --- танк вправо
кнопка 1 --- башня поворачивается вправо
кнопка 2 --- башня поворачивается влево
поворачивать на ходу тоже можно (как при езде вперед, так и назад).
поворот стоя на месте вращением гусеницы вперед, а другая на месте.
при езде вперед блокируется гусеница с той стороны в какую нужно повернуть.
также и назад.

у меня 2 части кода:

1. для передатчика.
2. для приемника.
скоро появится версия танка с возможностю управлять поворотом башни ( как кнопкой, так и джостикм)
также в коде есть вывод даных из джостика в монитор порта для на стройки центра джостика.


Скечь (код) для ардуино и видео про танк тут      https://youtu.be/LXG6GsLvmWg



код закоментирован и понятен для насторойки под себя.
также могу переделать под ваши нужды.
предостовление кода за бесплатно)))
кому не жалко заплатить за мой труд  пишите на почту   misha-2003-lego@ukr.net
перевод денег на карту Приват Банка 5168 7559 3363 8898  Голобоков Михаил

#2 Re: Програмування Arduino » управление танком 1 джостиком (нанo, NRF24L01, джостик, L298N) » 2017-08-29 07:27:21

про стрельбу в планах сделать)))
а шасси и сам корпус бивший танк на пульту)))

#3 Re: Програмування Arduino » управление танком 1 джостиком (нанo, NRF24L01, джостик, L298N) » 2017-08-28 21:18:13

NoName пише:

Миханик привет. видео конечно хочу посмотреть.

силка на видео + код для танка (приемник + передатчик)

#4 Re: Програмування Arduino » управление танком 1 джостиком (нанo, NRF24L01, джостик, L298N) » 2017-08-25 18:04:12

я могу настроит чтоб поворачивал 2 гусеницами, мне не сложно)))
била б камера я би поставил но нету)))

#6 Re: Програмування Arduino » управление танком 1 джостиком (нанo, NRF24L01, джостик, L298N) » 2017-08-25 15:11:59

я старалса для РЕАЛЕСТИЧЬНОСТИ, потому что настоящий танк --- блокирует, а не две в разние стороны крутит (КПП одна для 2 гусенец)

#7 Re: Програмування Arduino » управление танком 1 джостиком (нанo, NRF24L01, джостик, L298N) » 2017-08-25 14:22:21

Мой танк это модель по ходовой части, и поворот башни (жалко сервы нету верх-вниз пушку поворачивал)
я дам код для ходовой + для башни

#9 Програмування Arduino » управление танком 1 джостиком (нанo, NRF24L01, джостик, L298N) » 2017-08-25 12:17:47

Миханик
відповідей: 14

сделал скечь (код) для управления танком как машинкой, то-есть:
джой вперед --- танк вперед
джой назад --- танк назад
джой влево --- танк влево
джой вправо --- танк вправо

кнопка 1 --- башня поворачивается вправо
кнопка 2 --- башня поворачивается влево

поворачивать на ходу тоже можно (как при езде вперед, так и назад).
поворот стоя на месте вращением гусеницы вперед, а другая на месте.
при езде вперед блокируется гусеница с той стороны в какую нужно повернуть.
также и назад.
у меня 2 части кода:
1. для передатчика.
2. для приемника.
скоро появится версия танка с возможностю управлять поворотом башни ( как кнопкой, так и джостикм)
также в коде есть вывод даных из джостика в монитор порта для на стройки центра джостика.

Скечь и видео тут      https://youtu.be/LXG6GsLvmWg

Могу выслать видео о работа--способности кода на своем танке

код могу выслать на почту вам.
код закоментирован и понятен для насторойки под себя.
также могу переделать под ваши нужды.
предостовление кода за бесплатно)))
кому не жалко заплатить за мой труд  пишите на почту   misha-2003-lego@ukr.net
перевод денег на карту Приват Банка 5168 7559 3363 8898  Голобоков Михаил

#10 Re: Проекты » Сделал что-то интересное? Не держи в себе, расскажи сообществу! » 2017-06-04 12:58:31

прога для светильника на ик, движения датчик, и света дачике.


#include <IRremote.h>
int A=500;
const int dvig = 5;
#define LDR_PIN  A0
const int leda = 11;
const int led = 13;
const int lede = 12;
int led1=0;
int led2=0;
int RECV_PIN = 2;          // ИК приёмник
unsigned long lastKey = 0; // последняя нажатая кнопка с пульта
unsigned long keyCode = 0; // код, полученный с пульта

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
   Serial.begin(9600);
pinMode(led, OUTPUT);
  pinMode(leda, OUTPUT);
pinMode(lede, OUTPUT);
  pinMode(LDR_PIN, INPUT);
  pinMode(dvig, INPUT);
  irrecv.enableIRIn();
}


void loop()
{
   if ( irrecv.decode( &results )) {
    Serial.println(results.value, HEX);
 
   

    if (results.value==0x659A00FF&&led1==0){
       digitalWrite( lede, HIGH );led1=1;results.value=0;
       delay(100);
    }
    if (results.value==0x659A00FF&&led1==1){
       digitalWrite( lede, LOW );led1=0;results.value=0;
       delay(100);
    }
if (results.value==0x659AC936){
  A = A + 50;
}
if (results.value==0x659A29D6){
  A = A - 50;
}

   
irrecv.resume();   
}
  int l = analogRead(LDR_PIN);
int t = A;
boolean to = (l < t);

if (to && digitalRead(dvig) == 1) {
  digitalWrite(led, HIGH);  led2=1;

  } else {
    // ...иначе свет не нужен — выключаем его
    digitalWrite(led, LOW);  led2=0;
  }

  if (led1 == 1){
    digitalWrite(leda, HIGH);
  }
  else if (led2 == 1){
    digitalWrite(leda, HIGH);
  }
    else if (led1 == 0){
  digitalWrite(leda, LOW);
  }
  else if (led2 == 0){
    digitalWrite(leda, LOW);
  }

}

#11 Програмування Arduino » помогите по ик управлению » 2017-05-27 13:59:44

Миханик
відповідей: 0

я зделал на ардуино, 7-сегменте (на платке для уменшения виводов), и ик пульте.
я нажимаю на пульте кнопку с цифрой и цифра висвечиваетса.
я здела штоб нажал а цифри увеличивались или уменшались от текущего, я например держу ево а оно каждие 300 милисекунди увеличюютса или уменшаютса.
и еще есть случайное число.
а мне еще надо штоб я нажал а оно как слайди накомпе, но я должен нажать раз а оно пройти от 0 до 9 каждие 300 милисекунд.
вот скечь робочий. но неработает то што мне нужно.

вот фото

http://forum.arduino.ua/img/members/1554/IMG_20170527_134154.jpeg



#include "IRremote.h"
IRrecv irrecv(2);
decode_results results;

#define DATA_PIN    13 // пин данных (англ. data)
#define LATCH_PIN   12 // пин строба (англ. latch)
#define CLOCK_PIN   11 // пин такта (англ. clock)

byte segments[10] = {
  0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111, // ето символи в зашифровке
  0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111
};

void setup() {
  pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);

pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);

  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {

  if ( irrecv.decode( &results )) {
    Serial.println(results.value, HEX);
   
if (results.value==0x659A00FF){         // 0x659A00FF ето код с пульта
   segments[10] = 1 ; results.value=0;
}
if (results.value==0x659A807F){
   segments[10] = 2 ; results.value=0;
}
if (results.value==0x659A40BF){
   segments[10] = 3 ; results.value=0;
}
if (results.value==0x659AC03F){
   segments[10] = 4 ;results.value=0;
}
if (results.value==0x659A20DF){
  segments[10] = 5;results.value=0;
}
if (results.value==0x659AA05F){
  segments[10] = 6 ;results.value=0;
}
if (results.value==0x659A609F){
  segments[10] = 7 ;results.value=0;
}
if (results.value==0x659AE01F){
segments[10] = 8 ;results.value=0;
}
if (results.value==0x659A10EF){
segments[10] = 9;results.value=0;
}
if (results.value==0x659A906F){
  segments[10] = 0 ;results.value=0;
}
if (results.value==0x659AC936 && segments[10] != 9){ // ето прибаление на 1 каждие 200 милисекунд
  segments[10] = ++segments[10];
  delay(200);
}
if (results.value==0x659A29D6 && segments[10] != 0){ // ето отнимание от числа што сечас каждие 200 милисекунд
  segments[10] = --segments[10];
  delay(200);
}
if (results.value==0x659A6996){    // случайное число от 0 до 9
  segments[10] = (random(0, 10));
  delay(100);
}
// между етими коментами должна бить прога для нажатия один раз и оно как слайдами само,
//но штоб можно било отключить уво нажав просто другую кнопку



// код можете записать  как ХХХХХХХХ
irrecv.resume();   
{
  digitalWrite(LATCH_PIN, LOW);                              // а ето запись на екранчик
  // задвигаем (англ. shift out) байт-маску бит за битом,
  // начиная с младшего (англ. Least Significant Bit first)
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, segments[segments[10]]);
  // чтобы переданный байт отразился на выходах Qx, нужно
  // подать на пин строба высокий сигнал
  digitalWrite(LATCH_PIN, HIGH);
}
  }
  }

Підвал форуму