прога не работает хелп!

magstar
Offline
Зарегистрирован: 13.01.2016
int Bigpperiod; // длительность медленного полупериода
int MaxBigpperiod; // max длительность медленного полупериода
int Bigpause;
int imp; // длительность заполняющего импульса
int pause;
int maxi5; //максимальная длительность импульса при 5 КГц заполнения
int maxi10; //максимальная длительность импульса при 10 КГц заполнения
int Fq;//частота заполнения 5 или 10 КГц
int stepDlitF;
int i5; 
int i10;
int step5;
int step10;
int stepF;
int BUT1=2;
int BUT2=3;
int BUT3=4;
int BUT4=5;
int REFmn=6;
int T12pl=7;
int L5pl=8;
int C5pl=9;
int REFpl=10;
int T12mn=11;
int L5mn=12;
int C5mn=13;
int timer1;
int timer2;

void setup()
{ 
maxi5=190;
maxi10=95;
Fq=5;
i5=10; 
i10=5;
step5=10;
step10=5;
MaxBigpperiod=100;
stepF=5;
pinMode (BUT1, INPUT);
pinMode (BUT2, INPUT);
pinMode (BUT3, INPUT);
pinMode (BUT4, INPUT);
pinMode (REFpl, OUTPUT);
pinMode (T12pl, OUTPUT);
pinMode (L5pl, OUTPUT);
pinMode (C5pl, OUTPUT);
pinMode (REFmn, OUTPUT);
pinMode (T12mn, OUTPUT);
pinMode (L5mn, OUTPUT);
pinMode (C5mn, OUTPUT);
}
void loop(){

if (analogRead (BUT1>900))//изменение медленной частоты
{
MaxBigpperiod= MaxBigpperiod-stepF; 
if (MaxBigpperiod==0) { MaxBigpperiod=100;}
}

if (analogRead (BUT2>900)) //изменение длительности медленного полупериода
{
stepDlitF = MaxBigpperiod/5;
Bigpperiod = MaxBigpperiod-stepDlitF;
if (Bigpperiod<stepDlitF) { Bigpperiod = stepDlitF;}
Bigpause = MaxBigpperiod-Bigpperiod;
}

if (analogRead (BUT3>900)) //изменение частоты заполнения (5 или 10 кГц)
{
if (Fq==5) {Fq=10;}
else {Fq=5;}
}

if (analogRead (BUT4>900)) //изменение длительности заполняющих импульсов
{
if (Fq==5) {imp= i5+step5; pause=maxi5-i5; }
else { imp=i10+step10; pause=maxi10-i10;}
}

timer1=millis ();
do
{
digitalWrite (REFmn, HIGH);
digitalWrite (T12pl, HIGH);
digitalWrite (L5pl, HIGH);
digitalWrite (C5pl, HIGH);

delayMicroseconds(imp);

digitalWrite (REFmn, LOW);
digitalWrite (T12pl, LOW);
digitalWrite (L5pl, LOW);
digitalWrite (C5pl, LOW);

delayMicroseconds(pause);
}
while ((millis()-timer1)<Bigpperiod); 

delay (Bigpause); // Bigpause =MaxBigpperiod - Bigpperiod длительность паузы между медленными полупериодами

timer2=millis();
do
{
digitalWrite (REFpl, HIGH);
digitalWrite (T12mn, HIGH);
digitalWrite (L5mn, HIGH);
digitalWrite (C5mn, HIGH);

delayMicroseconds(imp);

digitalWrite (REFpl, LOW);
digitalWrite (T12mn, LOW);
digitalWrite (L5mn, LOW);
digitalWrite (C5mn, LOW);

delayMicroseconds(pause);
}
while ((millis()-timer2)<Bigpperiod);

delay (Bigpause);
}


 

magstar
Offline
Зарегистрирован: 13.01.2016

Доброго времени суток! Делаю генерацию импульсов с изменением длительности импулса и длиной пачки импульсов. Осцилографом смотрю- импульсы есть- изменений нет. Может кто подсмотрит- увидит в чем ошибка?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Попробуйте сами себе внятно объяснить, что написано в строках №№ 56, 62, 70 и 76

Затем посмотрите описания analogRead и if и попробуйте объяснить ещё раз.

А вообще, то, что

magstar пишет:

прога не работает

это нормально - они всегда через пень-колоду работают. Нормально работают программы.

magstar
Offline
Зарегистрирован: 13.01.2016

Спасибо! Увидел. Признаю- был не прав.