Запуск скетча с физической кнопке.

star68
Offline
Зарегистрирован: 05.01.2017

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

star68
Offline
Зарегистрирован: 05.01.2017
[code]
#include <config.h>
#include <coolant_control.h>
#include <defaults.h>
#include <eeprom.h>
#include <gcode.h>
#include <grblmain.h>
#include <limits.h>
#include <motion_control.h>
#include <nuts_bolts.h>
#include <planner.h>
#include <print.h>
#include <protocol.h>
#include <report.h>
#include <serial.h>
#include <settings.h>
#include <spindle_control.h>
#include <stepper.h>


#include <AccelStepper.h>
#include <MultiStepper.h>
 int pin=12;

AccelStepper stepper1(1,5,2);
 AccelStepper stepper2(1,6,3);
void setup()
{  
  {
 
  pinMode(12, OUTPUT);
  digitalWrite(13,LOW);
   digitalWrite(12,HIGH);
  delay(2000);}
 
    
    stepper1.setMaxSpeed(1000.0);
    stepper1.setAcceleration(10000.0);
    stepper1.moveTo(1400); 
    stepper2.setMaxSpeed(1000.0);
    stepper2.setAcceleration(10000.0);
    stepper2.moveTo(1400); 
   

    
}
 
void loop(){

if (stepper2.distanceToGo() == 0)
delay(1000);
if (stepper2.distanceToGo() == 0)
digitalWrite(12,LOW);

  stepper1.run(); 
   stepper2.run();  

 

}
 


[/code]

 

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

while(digitalRead(knopka)==HIGH);

inspiritus
Offline
Зарегистрирован: 17.12.2012

Ох и наинклюдили же Вы!

star68
Offline
Зарегистрирован: 05.01.2017
С инклюдами поправлю. Про кнопку что вы написали тоже понятно. Вот программный блок какой и как правильно вставить.?
 
sadman41
Offline
Зарегистрирован: 19.10.2016

Вам исполнитель нужен или что?

star68
Offline
Зарегистрирован: 05.01.2017

Исполнитель

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

Во сколько цените свою кнопку?

star68
Offline
Зарегистрирован: 05.01.2017

500р

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

В строку #29:

pinMode(knopka, INPUT_PULLUP);
while(digitalRead(knopka)==HIGH);

knopka - номер пина

star68
Offline
Зарегистрирован: 05.01.2017

Завтра проверю. А почему это условие не пишется в loop?

 

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

Нужен был запуск скетча с кнопки. Запуск скетча начинается с первых строк setup()

star68
Offline
Зарегистрирован: 05.01.2017

Аналоговый вход могу использовать? Или 13 пин нормально отработает? Все остальные заняты

star68
Offline
Зарегистрирован: 05.01.2017

Кнопку самую обычную могу взять? Один вход к пину. Второй к земле и все? Input-pullup все наводки уберёт? 

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

A0-A5 с лёгкостью . Если до кнопки не 10 метров, то внутреннего пуллапа должно хватить.

star68
Offline
Зарегистрирован: 05.01.2017

Шилд cnc v4. Там только А6 и А7. Сжёг нано уже сегодня с экспериментами с кнопкой

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

На 6 и 7 пуллапы и дижиталриды не работают.

star68
Offline
Зарегистрирован: 05.01.2017

Значит 13 пин

star68
Offline
Зарегистрирован: 05.01.2017

Кнопка будет работать. 

Нажал (замкнул) - цикл пошёл.

Если разомкну цикл дойдёт до конца?

 

star68
Offline
Зарегистрирован: 05.01.2017

Скинь плиз куда денежку перевести. Понял и без проверки уже косяки мои. 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

(голосом Дроздова) В этой теме, мои дорогие друзья, вы можете наблюдать виртуальный секс молодого, неопытного заказчика, и матёрого, потрёпанного жизнью исполнителя. Хитрый заказчик сумел приманить исполнителя вкусной прикормкой, и теперь изводит его вопросами, ходя вокруг да около. Посмотрите на эти ритуальные танцы, и подумайте - а стоит ли оно того? Не попадёт ли исполнитель в кабалу к заказчику за столь малый прикорм?

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

Спалите ещё одну Нану, значит.

Ставьте внешнюю подтяжку на 10ком к VCC на A6 и читайте его через analogRead()

Прикорм высылать на wrk.sadman@gmail.com

star68
Offline
Зарегистрирован: 05.01.2017

.Привет всем.предложенное решение -не работает.

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

Какое из них не работает?

star68
Offline
Зарегистрирован: 05.01.2017

скетч не запускается при нажатие кнопки.

star68
Offline
Зарегистрирован: 05.01.2017
[code]
int switchPin = 12;
int ledPin = 5;
 
void setup() {
 pinMode(switchPin, INPUT_PULLUP);
 pinMode(ledPin, OUTPUT);
}
 
void loop() {
 // включаем всетодиод при нажатой кнопке
 if(digitalRead(switchPin) == HIGH) {
 digitalWrite(ledPin, HIGH);
 } else {
 digitalWrite(ledPin, LOW);
 }
}
[/code]

 

star68
Offline
Зарегистрирован: 05.01.2017

при таком коде с  синтаксисом if кнопка работает.

star68
Offline
Зарегистрирован: 05.01.2017
[code]
int switchPin = 12;
int ledPin = 5;

void setup() 

{ pinMode(ledPin,OUTPUT); 
 pinMode(switchPin, INPUT_PULLUP);
while(digitalRead(switchPin)==HIGH){
 digitalWrite(ledPin,HIGH ); 
 }

 

}
void loop() {


}
[/code]

 

star68
Offline
Зарегистрирован: 05.01.2017

при таком синтакс while неработает

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

А что мотор крутит?

star68
Offline
Зарегистрирован: 05.01.2017

sadman41 пишет:

Какое из них не работает?

 

ваше предложенное решение.

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

Всё работает, что Вы тут рассказываете..

int switchPin = 12;
int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(switchPin, INPUT_PULLUP);
  while (digitalRead(switchPin) == HIGH);
  digitalWrite(ledPin, HIGH );
}

void loop() { }

 

star68
Offline
Зарегистрирован: 05.01.2017
[code]
#include <config.h>
#include <coolant_control.h>
#include <defaults.h>
#include <eeprom.h>
#include <gcode.h>
#include <grblmain.h>
#include <limits.h>
#include <motion_control.h>
#include <nuts_bolts.h>
#include <planner.h>
#include <print.h>
#include <protocol.h>
#include <report.h>
#include <serial.h>
#include <settings.h>
#include <spindle_control.h>
#include <stepper.h>


#include <AccelStepper.h>
#include <MultiStepper.h> 
 byte switchPin=12;
byte ledPin=13;
AccelStepper stepper1(1,5,2);
 AccelStepper stepper2(1,6,3);
 

 
void setup()
  { 
  
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(switchPin, INPUT_PULLUP);
 while (digitalRead(switchPin) == HIGH);{ 
 digitalWrite(ledPin,HIGH);
  delay(2000);
 stepper1.setMaxSpeed(1000.0);
    stepper1.setAcceleration(10000.0);
    stepper1.moveTo(1400); 
    stepper2.setMaxSpeed(1000.0);
    stepper2.setAcceleration(10000.0);
    stepper2.moveTo(1400); 
    
  
 
  }
 
}
    

 
void loop(){

if (stepper2.distanceToGo() == 0){
delay(3000);
digitalWrite(ledPin,LOW);}


  stepper1.run(); 
   stepper2.run();  

}
[/code]

 

star68
Offline
Зарегистрирован: 05.01.2017

всем привет.с кнопке работает спасибо.как сделать чтобы захотел и запустил с кнопке а только один раз срабатывает.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DIYMan пишет:

(голосом Дроздова) В этой теме, мои дорогие друзья, вы можете наблюдать виртуальный секс молодого, неопытного заказчика, и матёрого, потрёпанного жизнью исполнителя. Хитрый заказчик сумел приманить исполнителя вкусной прикормкой, и теперь изводит его вопросами, ходя вокруг да около. Посмотрите на эти ритуальные танцы, и подумайте - а стоит ли оно того? Не попадёт ли исполнитель в кабалу к заказчику за столь малый прикорм?

как в воду глядел )))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ua6em пишет:

как в воду глядел )))

Опыт не пропьёшь :))

star68
Offline
Зарегистрирован: 05.01.2017

Цена решения задачи?сроки?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

star68 пишет:

Цена решения задачи?сроки?

с Садманом41 рассчитались?

star68
Offline
Зарегистрирован: 05.01.2017

Конечно. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

star68 пишет:

Конечно. 

тогда просить его, он точно сделает любые хотелки

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

 Вы наверное только учитесь?

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

С прискорбием вынужден констатировать, что эксперимент показал следующее: несмотря на то, что на дворе уже 2020 год, после рассасывания проблемы у заказчиков всё ещё сразу отшибает память и выполнением обещания с такой же скоростью и настойчивостью, с какой они просили о решении, которое "очень нужно", они не заморачиваются. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

С прискорбием вынужден констатировать, что эксперимент показал следующее: несмотря на то, что на дворе уже 2020 год, после рассасывания проблемы у заказчиков всё ещё сразу отшибает память и выполнением обещания с такой же скоростью и настойчивостью, с какой они просили о решении, которое "очень нужно", они не заморачиваются. 

чё так витиевато, прямо скажи - кидалово )))

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

Не совсем.

Первое обещание было исполнено (впрочем, на этом этапе проблемы ещё оставались), а вот последующая доводка этого, не скрою, незамысловатого скетча до состояния, удовлетворяющего заказчика, де-факто была оценена им в 0 рэ.

rst
Offline
Зарегистрирован: 25.06.2018

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

Это гарантирует от "забывчивости" оплаты от заказчика.  ;)

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

Да это не заработок был, а эксперимент: заказчику было предложено самому оценить мою полезность. Оценка - 0x00 ;)

bwn
Offline
Зарегистрирован: 25.08.2014

sadman41 пишет:

Да это не заработок был, а эксперимент: заказчику было предложено самому оценить мою полезность. Оценка - 0x00 ;)

Так он же рассчитался, а остальное, это Вы свои косяки исправляли, хорошо еще в суд не потащил, за моральный с матерьяльным.))))

star68
Offline
Зарегистрирован: 05.01.2017

Доработка так же была оплачена.И последовала еще просьба по доработке которая так же будет оплачена.

-NMi-
Offline
Зарегистрирован: 20.08.2018

ua6em пишет:

с Садманом41 рассчитались?

star68 пишет:

Конечно. 

sadman41 пишет:

заказчику было предложено самому оценить мою полезность. Оценка - 0x00 ;)

ua6em пишет:

как в воду глядел )))

Дауш. 0х00. Хоть "х" остался от шеснатцатиричнай систэмы )))

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

sadman41 пишет:

Да это не заработок был, а эксперимент: заказчику было предложено самому оценить мою полезность. Оценка - 0x00 ;)

Ну все же знают - "готовый скетч ничего не стоит" :)

artam
Offline
Зарегистрирован: 24.12.2019

здравствуйте,есть скетч,работает на MAX7219 кириллицей в одну строку.Что  нужно добавить чтоб было 2x8 и при нажатии кнопки текст менялся

#include <SPI.h>                             // Подключаем библиотеку SPI
#include <Adafruit_GFX.h>                    // Подключаем библиотеку Adafruit_GFX
#include <Max72xxPanel.h>                    // Подключаем библиотеку Max72xxPanel
int pinCS = 9;                               // Указываем к какому выводу подключен контакт CS
int numberOfHorizontalDisplays = 1;          // Количество матриц по горизонтали
int numberOfVerticalDisplays = 8;            // Количество матриц по-вертикали

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

String tape = "";
int wait = 100;                             // интервал, чем меньше тем бытрее бежит строка
int spacer = 1;                             // Промежуток между символами (кол-во точек)
int width = 5 + spacer;                     // Ширина шрифта составляет 5 пикселей

void setup() {
  Serial.begin(9600);
  tape = utf8rus("московскуии вокзал");
  matrix.setIntensity(5);                    // Задаем яркость от 0 до 15
  matrix.setRotation(3);                     // Направление текста 1,2,3,4
}

void loop() {

  for ( int i = 0 ; i < width * tape.length() + matrix.width() - spacer; i++ )
  {
    matrix.fillScreen(LOW);

    int letter = i / width;                   // номер символа выводимого на матрицу

    int x = (matrix.width() - 1) - i % width;
    int y = (matrix.height() - 8) / 2;         // отцентрировать текст по вертикали

    while ( x + width - spacer >= 0 && letter >= 0 ) {
      if ( letter < tape.length() ) {
        matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
      }
      letter--;
      x -= width;
    }
    matrix.write();                       // выведим значения на матрицу
    delay(wait);
  }
}

/* Функция перекодировки русских букв из UTF-8 в Win-1251 */
String utf8rus(String source)
{
  int i, k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };
  k = source.length(); i = 0;
  while (i < k) {
    n = source[i]; i++;
    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
            n = source[i]; i++;
            if (n == 0x81) {
              n = 0xA8;
              break;
            }
            if (n >= 0x90 && n <= 0xBF) n = n + 0x2F;
            break;
          }
        case 0xD1: {
            n = source[i]; i++;
            if (n == 0x91) {
              n = 0xB7;
              break;
            }
            if (n >= 0x80 && n <= 0x8F) n = n + 0x6F;
            break;
          }
      }
    }
    m[0] = n; target = target + String(m);
  }
  return target;
}