#1 2017-05-27 13:59:44

Миханик
Участник
Зарегистрирован: 2017-05-27
Сообщений: 11

помогите по ик управлению

я зделал на ардуино, 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);
}
  }
  }

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела