Помогите разобратся,пожалуйста.

Maksym
Offline
Зарегистрирован: 04.06.2018

Я сам электрик,но пришлось иметь дело с ардуино.

Ситуация следующая,необходимо устроить мигание диодами(n-количество) с хаотической частотой,а после нажатия кнопки нужно чтобы засветились только определенные лампочки.Так вот в чем проблема,моих знаний достаточно только для того что-бы мигание устроить,кнопка вобще ни на что не влияет(все крутится в loop,а на кнопку мороз).Если кто может скиньте пожалуйста какой-то элементарный скетч,как пример.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

а скетч где?

в loop проверяете некую переменную и в случае ее установки прерываете режим моргания

кнопку на 2 пин например

http://arduino.ru/Tutorial/Arduino_Interrupts

 

Maksym
Offline
Зарегистрирован: 04.06.2018
#define LED_1 1
#define LED_2 2
#define LED_3 3
#define LED_4 4
#define LED_5 5
#define button 6
void setup() {
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(LED_4, OUTPUT);
  pinMode(LED_5, OUTPUT);
  pinMode(button, INPUT);
}
void loop() {
  digitalWrite(button, LOW); {
    digitalWrite(LED_1, HIGH);
    delay(200);
    digitalWrite(LED_1, LOW);
    delay(150);
    digitalWrite(LED_2, HIGH);
    delay(20);
    digitalWrite(LED_2, LOW);
    delay(15);
    digitalWrite(LED_3, HIGH);
    delay(400);
    digitalWrite(LED_3, LOW);
    delay(650);
    digitalWrite(LED_4, HIGH);
    delay(100);
    digitalWrite(LED_4, LOW);
    delay(350);
    digitalWrite(LED_5, HIGH);
    delay(50);
    digitalWrite(LED_5, LOW);
    delay(10);
    digitalWrite(LED_1, HIGH);
    delay(400);
    digitalWrite(LED_1, LOW);
    delay(350);
  }
  digitalWrite(button, HIGH); {
    digitalWrite(LED_1, LOW);
    digitalWrite(LED_2, LOW);
    digitalWrite(LED_3, LOW);
    digitalWrite(LED_4, HIGH);
    digitalWrite(LED_5, HIGH);
  }
}
Я в програмировании нольбмогу только элементарщину всякую,вот легкая запарка и все,вишу.
xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015
#define LED_1 1
#define LED_2 2
#define LED_3 3
#define LED_4 4
#define LED_5 5
#define button 6

void setup() {
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(LED_4, OUTPUT);
  pinMode(LED_5, OUTPUT);
  pinMode(button, INPUT);
}

void loop() {
  if (digitalRead(button)) {
    digitalWrite(LED_1, HIGH);
    delay(200);
    digitalWrite(LED_1, LOW);
    delay(150);
    digitalWrite(LED_2, HIGH);
    delay(20);
    digitalWrite(LED_2, LOW);
    delay(15);
    digitalWrite(LED_3, HIGH);
    delay(400);
    digitalWrite(LED_3, LOW);
    delay(650);
    digitalWrite(LED_4, HIGH);
    delay(100);
    digitalWrite(LED_4, LOW);
    delay(350);
    digitalWrite(LED_5, HIGH);
    delay(50);
    digitalWrite(LED_5, LOW);
    delay(10);
    digitalWrite(LED_1, HIGH);
    delay(400);
    digitalWrite(LED_1, LOW);
    delay(350);
  }
  else 
  {
    digitalWrite(LED_1, LOW);
    digitalWrite(LED_2, LOW);
    digitalWrite(LED_3, LOW);
    digitalWrite(LED_4, HIGH);
    digitalWrite(LED_5, HIGH);
  }
}

не понятно как кнопка подключена, в любом случае работать будет

на нажатие или на отжатие, дребезг не учтен.

учите язык !

                                                   

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, раз электрик, лови пример:

#define LED_12 12
#define LED_13 13
#define CHANCE_12 50
#define CHANCE_13 37

#define button 6

void setup() {
  pinMode(LED_12, OUTPUT);
  pinMode(LED_13, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}

void loop() {
  // If button not pressed (HIGH) - random() used for LOW/HIGH LED state generate
  if (HIGH == digitalRead(button)) {
    digitalWrite(LED_12, random(100) < CHANCE_12);
    digitalWrite(LED_13, random(100) < CHANCE_13);
    delay(200);
  } else {
    digitalWrite(LED_12, HIGH);
    digitalWrite(LED_13, LOW);
  }
}

Захочешь сделать красиво - ищи "blink без delay" и изучи массивы. Не хочешь - размножай строчки копипастой. Меняй значения CHANCE_XX чтобы изменить характер мигания 

Maksym
Offline
Зарегистрирован: 04.06.2018

Спасибо,вроде работает,буду щас под свои нужды подстраивать.

Так и учусь,опытным путем,нахожу похожий как мне нужно скетч,пилю под свои условия и смотрю как правильно,вот на сайте даже зарегистрировался.Вам спасибо и удачи!!!

Evgen1204
Offline
Зарегистрирован: 16.06.2018
0

ребят помогите не могу прописать правельно,нужно чтоб серво привод работал отдельно когда растояние до ультрозвукового датчика больше 15 см

#include <Servo.h>
 
#define trigPin 12     // объявление 
#define echoPin 13     // переменных 
#define led 2
#include ServoPIN 10
 
Servo servo1;
 
int sound = 250;
void setup()
{
  Serial.begin (9600);        // настройка
  pinMode(trigPin, OUTPUT);   // портов
  pinMode(echoPin, INPUT);
  pinMode(led, OUTPUT);
  servo1.attach(servoPin);
  servo1.write(90);          
}
void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); // чтобы начать измерения,
  delayMicroseconds(10);       // необходимо на вход trigPin подать высокий сигнал 5В на 10мкс
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); // с выхода echoPin считывается как долго был открыт порт
  distance = (duration/2) / 29.1;    // преобразование полученного параметра в дистанцию
 
  if (distance <= 15) {      // первое условие, если расстояние меньше либо равно 30,
    digitalWrite(led, HIGH);// тогда включить первый светодиод
    sound = 250;
  }
    else {
    digitalWrite(led,LOW);
    delay(500);
    }
    Serial.print(distance); // выводит расстояние в сантиметрах
    Serial.println(" cm"); 
  delay(500); // задержка пол сикунды
}
  if (distance >= 15) 
  servo1.write(90);
  delay(20000);
  servo1.write(0);
  delay(1000);
  servo1.write(180);
  delay(1000);
 
}
  else {
    servo1.write(90);
  delay(20000);
  servo1.write(0);
  delay(1000);
  servo1.write(180);
  delay(1000);
  }

 

Maksym
Offline
Зарегистрирован: 04.06.2018

Спасибо.Попробую потом на свои реалии.Если надо могу по электрике подсказать.Правда я больше монтер чем инженер.но кое-что умею.

Lelik
Offline
Зарегистрирован: 02.12.2016

приветствую Вас друзья, помогите разобраться со скейчем, пытался его слепить из двух, не могу понять где затык...

проект изначально делался под w5100, на котором все это дело работает нормально, появилась необходимость перейти на WiFi и где-то чего-то делаю не так. ниже ссылка на проект.

скейч для этой платы сделал, но в нем айпишник всегда плавает, а со статическим чтого-то не получается, неделю долблюсь, все никак... надеюсь на вашу помощь.

https://yadi.sk/d/WP8HypuB3XkGYW