arduino PWM с контролем ошибки

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

Здравствуйте! Написал скетч ШИМ все работает, но хотелось бы организовать вход отвечающий за ошибку.

прописал кнопку и задержку включения после сработки, все работает отключается на 10сек.

подскажите как сделать фиксацию что бы схема не включалась. еще одну кнопку которая будет приводить схему в работу

 

int Potenciometr = 0;
int DcMotor = 9;
const int but = 2;
int buttonState = 0;
void setup() {
  // put your setup code here, to run once:
 
  pinMode(but, INPUT);
  pinMode(Potenciometr,INPUT);
  pinMode(DcMotor,OUTPUT);
  Serial.begin(9600);
 }

void loop() {
  // put your main code here, to run repeatedly:
  buttonState = digitalRead(but);
  
  if (buttonState == HIGH) {
    
    digitalWrite(DcMotor, LOW);
   }
     
  int Xmotor = map(analogRead(Potenciometr),0,1023,0,255);
  analogWrite(DcMotor,Xmotor);
  if (buttonState == HIGH) {
    
    digitalWrite(DcMotor,0);
    delay(10000);
   }
  
 }

 

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

прописал butER какое условие прописать могов не хватает

int Potenciometr = 0;
int DcMotor = 9;
const int but = 2;
const int butER =3;
int buttonState = 0;
int buttonStateER = 0;
void setup() {
  // put your setup code here, to run once:
 
  pinMode(but, INPUT);
  pinMode(butER, INPUT);
  pinMode(Potenciometr,INPUT);
  pinMode(DcMotor,OUTPUT);
  Serial.begin(9600);
 }

void loop() {
  // put your main code here, to run repeatedly:
  buttonState = digitalRead(but);
  buttonStateER = digitalRead(butER);
  
     
  int Xmotor = map(analogRead(Potenciometr),0,1023,0,255);
  analogWrite(DcMotor,Xmotor);
  if (buttonState == HIGH) {
    
    digitalWrite(DcMotor,0);
    delay(10000);
   }
  
 }

 

nevkon
Offline
Зарегистрирован: 20.01.2015

От делая надо избавляться. Например так:

int Potenciometr = 0;
int DcMotor = 9;
const int but = 2;
const int butER =3;
int buttonState = 0;
int buttonStateER = 0;
void setup() {
  // put your setup code here, to run once:
 
  pinMode(but, INPUT);
  pinMode(butER, INPUT);
  pinMode(Potenciometr,INPUT);
  pinMode(DcMotor,OUTPUT);
  Serial.begin(9600);
 }

void loop() {
  // put your main code here, to run repeatedly:
  //buttonState = digitalRead(but);
  buttonStateER = digitalRead(butER);
  
     
  int Xmotor = map(analogRead(Potenciometr),0,1023,0,255);
  analogWrite(DcMotor,Xmotor);
  if (buttonStateER == HIGH) {
    digitalWrite(DcMotor,0);
   }
  while (buttonStateER == HIGH) {
    buttonState = digitalRead(but);
    if (buttonState == HIGH) {
      buttonStateER = LOW;
    }
   }
  
 }

 

nevkon
Offline
Зарегистрирован: 20.01.2015

Разве что антидребезг все-же не помешает.

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

чет шим неправильно работать стал( мигалка какая то с регулировкой яркости

переписал вроде просто руками и все заработало

 

nevkon
Offline
Зарегистрирован: 20.01.2015

Обе кнопки подключены? Кнопка останова на 3 пине, кнопка запуска на 2 пине.

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

Все спасибо переписал, и все пошло, огромное спасибо)))

int Potenciometr = 0;
int DcMotor = 9;
const int but = 2;
const int butER =3;
int buttonState = 0;
int buttonStateER = 0;
void setup() {
  // put your setup code here, to run once:
 
  pinMode(but, INPUT);
  pinMode(butER, INPUT);
  pinMode(Potenciometr,INPUT);
  pinMode(DcMotor,OUTPUT);
  
 }

void loop() {
  // put your main code here, to run repeatedly:
  buttonState = digitalRead(but);
  
  
     
  int Xmotor = map(analogRead(Potenciometr),0,1023,0,255);
  analogWrite(DcMotor,Xmotor);
  if (buttonState == HIGH) {
    
    digitalWrite(DcMotor,0);
    delay(1000);
   }
  while (buttonState == HIGH) {
  buttonStateER = digitalRead(butER);
  if (buttonStateER == HIGH) {
    buttonState = LOW;
  }
  }
 }

 

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

Здравствуйте! Подскажите можно ли реализовать управление несколькими шим от одного аналогово входа, так чтобы сигналы между шим отличались  сдвигом 120гр

Мысль такая...

управлять 3мя ключами со сдвигом, так чтобы 1 ключ был загружен к примеру на 30% при полной мощности нагрузки, соеденены колекторы транзисторов и подключена нагрузка

нарисовал картинку загрузить не могу((

 

aleksey19ru
Offline
Зарегистрирован: 23.06.2016
nevkon
Offline
Зарегистрирован: 20.01.2015

Аппаратно навряд ли такое можно сделать, программно только. Иначе говоря нарисовать свой ШИМ.

Dmitry-A-B
Offline
Зарегистрирован: 19.07.2016

Похоже на PPM, используется в проп. радиоуправлении.