управление шим по таблице

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

доброго врмени всем прошу помощи купил ардуинку думал что все будет легко и просто но не так вообщем сначало нашол скетч (http://www.primera-club.ru/f/elektronika/62778-preobrazovatel-vq-tablic-...) похожий на то что мне надо но оказалось что не разобравшись что да как работает ни чего не получится

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

const int VAF = A0;    //расходомер вход
const int MAF = 3;    //расходомер выход
int val  = 0;   //переменная для хранения аналогового значения

void setup()
{ 
 

pinMode (MAF, OUTPUT); // сконфигурировать MAF контакт как выход
}

void loop()
{
  val = analogRead(VAF);
 
 if (val=4)
 {
  analogWrite(MAF,205);
 }

  else if(val=125)
 {
  analogWrite(MAF,164);
 }

  else if(val=205)
 {
  analogWrite(MAF,139);
 }

  else if(val=270)
 {
  analogWrite(MAF,111);
 }
 
  else if(val=334)
 {
  analogWrite(MAF,85);
 }

  else if(val=387)
 {
  analogWrite(MAF,68);
 }

  else if(val=426)
 {
  analogWrite(MAF,66);
 }

  else if(val=455)
 {
  analogWrite(MAF,61);
 }

  else if(val=481)
 {
  analogWrite(MAF,59);
 }

  else if(val=504)
 {
  analogWrite(MAF,56);
 }

  else if(val=524)
 {
  analogWrite(MAF,53);
 }

  else if(val=555)
 {
  analogWrite(MAF,51);
 }

  else if(val=573)
 {
  analogWrite(MAF,49);
 }

  else if(val=592)
 {
  analogWrite(MAF,44);
 }

  else if(val=610)
 {
  analogWrite(MAF,40);
 }

  else if(val=627)
 {
  analogWrite(MAF,36);
 }

  else if(val=643)
 {
  analogWrite(MAF,32);
 }

  else if(val=657)
 {
  analogWrite(MAF,29);
 }

  else if(val=670)
 {
  analogWrite(MAF,27);
 }

  else if(val=680)
 {
  analogWrite(MAF,24);
 }

  else if(val=692)
 {
  analogWrite(MAF,23);
 }

  else if(val=700)
 {
  analogWrite(MAF,22);
 }

  else if(val=711)
 {
  analogWrite(MAF,22);
 }

  else if(val=719)
 {
  analogWrite(MAF,21);
 }

  else if(val=727)
 {
  analogWrite(MAF,20);
 }

  else if(val=733)
 {
  analogWrite(MAF,20);
 }

  else if(val=741)
 {
  analogWrite(MAF,19);
 }

  else if(val=750)
 {
  analogWrite(MAF,19);
 }

  else if(val=758)
 {
  analogWrite(MAF,18);
 }

  else if(val=764)
 {
  analogWrite(MAF,18);
 }

  else if(val=772)
 {
  analogWrite(MAF,17);
 }

  else if(val=780)
 {
  analogWrite(MAF,17);
 }

  else if(val=786)
 {
  analogWrite(MAF,16);
 }

  else if(val=795)
 {
  analogWrite(MAF,16);
 }

  else if(val=803)
 {
  analogWrite(MAF,15);
 }

  else if(val=809)
 {
  analogWrite(MAF,15);
 }

  else if(val=815)
 {
  analogWrite(MAF,14);
 }

  else if(val=823)
 {
  analogWrite(MAF,14);
 }

  else if(val=831)
 {
  analogWrite(MAF,13);
 }

  else if(val=840)
 {
  analogWrite(MAF,13);
 }

  else if(val=848)
 {
  analogWrite(MAF,12);
 }

  else if(val=856)
 {
  analogWrite(MAF,12);
 }

  else if(val=864)
 {
  analogWrite(MAF,11);
 }

  else if(val=872)
 {
  analogWrite(MAF,11);
 }

  else if(val=877)
 {
  analogWrite(MAF,10);
 }

  else if(val=881)
 {
  analogWrite(MAF,10);
 }

  else if(val=885)
 {
  analogWrite(MAF,9);
 }

  else if(val=889)
 {
  analogWrite(MAF,9);
 }

  else if(val=893)
 {
  analogWrite(MAF,8);
 }

  else if(val=897)
 {
  analogWrite(MAF,8);
 }

  else if(val=901)
 {
  analogWrite(MAF,7);
 }

  else if(val=905)
 {
  analogWrite(MAF,7);
 }

  else if(val=909)
 {
  analogWrite(MAF,6);
 }

  else if(val=913)
 {
  analogWrite(MAF,6);
 }

  else if(val=918)
 {
  analogWrite(MAF,5);
 }

  else if(val=922)
 {
  analogWrite(MAF,5);
 }

  else if(val=926)
 {
  analogWrite(MAF,4);
 }

  else if(val=930)
 {
  analogWrite(MAF,4);
 }

  else if(val=934)
 {
  analogWrite(MAF,3);
 }

  else if(val=938)
 {
  analogWrite(MAF,3);
 }

  else if(val=942)
 {
  analogWrite(MAF,2);
 }

  else if(val=952)
 {
  analogWrite(MAF,2);
 }

  else if(val=979)
 {
  analogWrite(MAF,1);
 }

  else if (val=983)
 {
  analogWrite(MAF,1);
 }

}

пробывал еще так все работает но значения шим промежуточные не совпадают с тем что мне надо

const int lPin = 3; 
const int PPin = A0; 
void setup() {
 
pinMode(lPin, OUTPUT);
}
 
void loop(){
analogWrite(lPin,map(analogRead(PPin),0,1024,205,0)); 
}

и еще может кто подскажет как создать какойто массив входного напряжения и выходного как с ним работать дальше 

JasKo
Offline
Зарегистрирован: 21.11.2015

 в первом скетче все знаки = в проверках условия if поменяй на <=.

В точное равенство аналоговым сигналом попасть проблематично.

И не лишним будет определить режим работы ножки A0.

nik182
Offline
Зарегистрирован: 04.05.2015

В if надо =  поменять на <

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ну и до кучи, чтобы ТС знал в чем еще была ошибка. Если сравнивать именно на равенство, то надо писать == (оператор сравнения), а не = (оператор присвоения).

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

огромное спасибо буду пробовать и изучать дальше . а можно все эти числа объединить в какой массив чтоб скетч. был покороче?

lean_74
Offline
Зарегистрирован: 22.12.2015
yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

спасибо буду разбираться дальше