Голосование

Гимн :pozor:

И вновь продолжаем позор!
89 (20%)
И снова позорно в груди!
63 (14.2%)
Позор такой молодой
63 (14.2%)
И юный позор впереди!
82 (18.5%)
81 (18.2%)
перечитывать позор - это всё равно что следить за развитием рулона туалетной бумаги :pozor:
66 (14.9%)

Проголосовало пользователей: 256

Автор Тема: Клуб любителей смайлика :pozor: 2  (Прочитано 6671575 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246750 : Февраля 22, 2017, 16:02:55 »
нет  :pozor:
не будет следить ни за чем
запомнит состояние пина на момент выполнения кода и всё
ну она и должна запоминать - до следующего момента выполнения кода, который произойдет через 20миллисекунд ???

Оффлайн Pitsot

  • Эксперт
  • *****
  • Сообщений: 1229
  • unpozorable 8)
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246751 : Февраля 22, 2017, 16:03:33 »
а, епт, опять про цикл бесконечный забыл
в бесконечном цикле - да, на каждой итерации будет обновлять

... и добавил:

напиши плз коменты, я че то путаюсь в этих пинах и прочем
« Последнее редактирование: Февраля 22, 2017, 16:07:23 от Pitsot »

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246752 : Февраля 22, 2017, 16:07:30 »
у меня очень низкий предел обучаемости, то есть я в принципе не могу освоить что-то сложное :pozor:

Оффлайн Pitsot

  • Эксперт
  • *****
  • Сообщений: 1229
  • unpozorable 8)
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246753 : Февраля 22, 2017, 16:07:41 »
потому что я тупой :7:

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246754 : Февраля 22, 2017, 16:07:54 »
напиши плз коменты, я че то путаюсь в этих пинах и прочем
ща попробую

Оффлайн _Shamrock_

  • Завсегдатай
  • ***
  • Сообщений: 411
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246755 : Февраля 22, 2017, 16:10:00 »
Гордая. Прям как я. 8) Не ушибись сильно пробивая стенки лбом, пупсик. 8)

... и добавил:
Всегда так кажется, типа "да зачем мне весь раздел изучать мне тут написать десяток строк" и чем ты думаешь все это заканчивается обычно? :pozor:
постараюсь :pozor: да и не гордая. Просто не хочу доставлять хлопоты. Она не должна решать мои проблемы. Сама уже взрослая девочка :pozor:

Хм... Еще ж пои и веера продать штуки за 3 можно :hmmm: надо будет на выходных заняться и выставить на продажу все ненужное барахло  :pozor:

Оффлайн r3d0ut

  • Ветеран форума
  • ******
  • Сообщений: 3837
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246756 : Февраля 22, 2017, 16:14:29 »
_Shamrock_,  :clapping:

Оффлайн Pitsot

  • Эксперт
  • *****
  • Сообщений: 1229
  • unpozorable 8)
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246757 : Февраля 22, 2017, 16:17:30 »
#include <Servo.h>

Servo servoX;

unsigned long time_x = millis(); //переменная для команды х
unsigned long time_z = millis(); //переменная для команды z

void setup()
{
  servoX.attach(6);
  servoY.attach(7);
  servoX.write(90);
  servoY.write(90);
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
}



void loop()
{
  while (Serial.available() > 0) //пока есть че то в буфере
   {
    int cmd = Serial.read(); //читаем команду
    int x = servoX.read(); //читаем состояние сервопривода
    boolean pin3 = digitalRead(3); //запоминаем состояние пин3
    boolean pin5 = digitalRead(5); //запоминаем состояние пин5
    boolean timer_z = (millis() - time_z > 500); //прошло ли полсекунды с момента когда засекли time_z


    if (millis() - time_x > 1000 && pin3) { //если с момента time_x прошло больше секунды и пин3 (чо с ним?) - пишем LOW в пин3
    digitalWrite(3, LOW); }

      switch (cmd)
     {
        case 'Z'
        if (!pin5 && timer_z) {   //если не пин5 (чо с ним?) и прошло полсекунды с момента когда засекли time_z
        digitalWrite (5, HIGH);  //пишем в пин5 HIGH
        time_z = millis();} //засекаем time_z
        else if (pin5 && timer_z) { //по моему тут можно просто else, нет? если пин5(чо с ним?) и timer_z был тру там где ты его объявлял
        digitalWrite (5, LOW); //пишем в пин5 LOW
        time_z = millis();} //засекаем time_z - нафига один и тот же код пихать в разные ветки if-else?
        break;


        case 'X':
        time_x = millis(); //засекаем time_x
        digitalWrite(3, HIGH); //пишем в пин5 HIGH
        break;

        case 'R':
        if (x < 180) { servoX.write(x + 1); } //если на момент начала итерации x был меньше 180 - пишем в сервоХ x+1
        break;

        case 'L':
        if (x > 0) { servoX.write(x - 1); } //если на момент начала итерации x был меньше 180 - пишем в сервоХ х-1
        break;
      }
     delay (20)
   }
}

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246758 : Февраля 22, 2017, 16:18:25 »
#include <Servo.h>   //библиотека для серводвигателей

Servo servoX;
Servo servoY;  // названия для двигателей

unsigned long time_x = millis(); // переменные запоминают текущее время
unsigned long time_z = millis(); //

void setup()
{
  servoX.attach(6);         // подключаются двигатели и пины
  servoY.attach(7);
  servoX.write(90);
  servoY.write(90);
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
}



void loop()        //начинается цикл
{
  while (Serial.available() > 0)   // пока есть данные для считывания блю-туса
   {
    int cmd = Serial.read();     // переменная считывает команду с блютуса
    int x = servoX.read();       // запоминает текущее положение двигателя
    boolean pin3 = digitalRead(3); // текущие положения пинов
    boolean pin5 = digitalRead(5);
    boolean timer_z = (millis() - time_z > 500); // триггер - 1 если с момента запоминания текущего времени прошло больше полсекунды и 0 если меньше


    if (millis() - time_x > 1000 && pin3) {
    digitalWrite(3, LOW); }             //эта хрень автоматически гасит 3 пин если он был включен секунду назад, потом будет переделано на серводвигатель наверно

      switch (cmd)          //свитчер
     {
        case 'Z'                 //если приходит команда Z 
        if (!pin5 && timer_z) {  // если пин5 не горит и триггер сработал (1)
        digitalWrite (5, HIGH);  //зажигает пин
        time_z = millis();}      // и запоминает текущее время для обновления триггера
        else if (pin5 && timer_z) { // то же самое, но наоборот
        digitalWrite (5, LOW);
        time_z = millis();}       
        break;                  //если триггер timer_z не сработал (0), то начинает цикл сначала


        case 'X':            // это включается пин3, который сам выключится через секунду
        time_x = millis();
        digitalWrite(3, HIGH);
        break;

        case 'R':        //меняют угол серва на 1 градус за цикл туда или сюда
        if (x < 180) { servoX.write(x + 1); }
        break;

        case 'L':
        if (x > 0) { servoX.write(x - 1); }
        break;
      }
     delay (20) //задержка между циклами
   }
}

... и добавил:

Pitsot, ты че делаешь >:(

Оффлайн r3d0ut

  • Ветеран форума
  • ******
  • Сообщений: 3837
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246759 : Февраля 22, 2017, 16:20:02 »
 :D :D :D

Оффлайн Pitsot

  • Эксперт
  • *****
  • Сообщений: 1229
  • unpozorable 8)
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246760 : Февраля 22, 2017, 16:20:16 »
можешь моё подредактировать  :pozor:

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246761 : Февраля 22, 2017, 16:20:28 »
нашел глобальную ошибку - цикл будет крутиться только пока есть че читать с блютуза, то есть надо вынести переменные за вайл :pozor:

Оффлайн Pitsot

  • Эксперт
  • *****
  • Сообщений: 1229
  • unpozorable 8)
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246762 : Февраля 22, 2017, 16:23:43 »
нашел глобальную ошибку - цикл будет крутиться только пока есть че читать с блютуза, то есть надо вынести переменные за вайл :pozor:

я думал что оно будет дергать loop() бесконечно по таймеру

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246763 : Февраля 22, 2017, 16:25:22 »
я думал что оно будет дергать loop() бесконечно по таймеру
хз, там же написано вайл. так что может все что внутри вайла не будет выполняться вообще пока не придет команда в буфер ???

Оффлайн Pitsot

  • Эксперт
  • *****
  • Сообщений: 1229
  • unpozorable 8)
Re: Клуб любителей смайлика :pozor: 2
« Ответ #246764 : Февраля 22, 2017, 16:27:05 »
хз, там же написано вайл. так что может все что внутри вайла не будет выполняться вообще пока не придет команда в буфер ???

ну да :pozor: