Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Arduino - fadeIn(); fadeOut(); функции
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=15690
Страница 1 от 2

Автор:  maguss4o [ Чет Яну 11, 2018 7:00 pm ]
Заглавие:  Arduino - fadeIn(); fadeOut(); функции

Здравейте,

Наскоро започнах да си чеша пръстите с ардуино и една елементарна задачка ме спъна яко :D

Схемата е следната. Едно Arduino Uno и 3 LED към пинове: 9,10,11.
Целта ми е да викам функции за fadeIn и fadeOut, като задавам масив с пиновете и времето, за което да се случи целия ефект.
Схема на ефекта:

Изображение

Код:
int led1 = 9;     // PWM pin
int led2 = 10;    // PWM pin
int led3 = 11;    // PWM pin
int fadeTime = 5000;  // Overal fading time in ms

void fadeIn(int myArray[], int time){
  int arraySize = sizeof(myArray);
  double sectionFade = time/(arraySize+2);

  // ????
}

void fadeOut(int myArray[], int time){
  int arraySize = sizeof(myArray);
  double sectionFade = time/(arraySize+2);

  // ????
}

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  //Serial.begin(9600); 
  //Serial.println("== SERIAL START ===");
}

void loop() {
  int myFadeIn[3] = {led1, led2, led3};
  fadeIn(myFadeIn, fadeTime);
 
  int myFadeOut[3] = {led3, led2, led1};
  fadeOut(myFadeOut, fadeTime);
}

Автор:  stefan63 [ Чет Яну 11, 2018 7:48 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Tова трябва да е Ц...
Къде е main() или има начин да се каже ,че loop() e всъщност main()?

Автор:  slav4o.com [ Чет Яну 11, 2018 7:51 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

На ардуиното е така setup() се изпълнява един път, loop() е основния цикъл :)

Автор:  stefan63 [ Чет Яну 11, 2018 8:27 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Тоест код-листингът е генериран и се пита
Цитат:
void fadeOut(int myArray[], int time){
int arraySize = sizeof(myArray);
double sectionFade = time/(arraySize+2);

// ???? КАКВО ДА НАПИШЕМ ТУК?
}

Автор:  maguss4o [ Чет Яну 11, 2018 8:43 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

stefan63 написа:
Тоест код-листингът е генериран и се пита
Цитат:
void fadeOut(int myArray[], int time){
int arraySize = sizeof(myArray);
double sectionFade = time/(arraySize+2);

// ???? КАКВО ДА НАПИШЕМ ТУК?
}


С други думи - да.

Пробвах с 2 цикъла for не става. После с 3 цикъла for където първия ми цикъл е общото време time/броя елементи в масива (с което разделям цялото време на интервали, който интервал е 50% от даденото състояние), следващия ми вложен for е общия time разделен на интервалите (където при 3 светодиода и време от 5 секунди се получава 1250ms на интервал) и третия ми вложен for е листването на елементите от масива и задаване на стойността им с analogWrite като стойността им я map-вам от 0 до 1250 време на интервал за 0 до 127. Е да ама удрям на камък. Търсения ефект не се получава.

Автор:  stefan63 [ Чет Яну 11, 2018 9:32 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Това е несериозно. :D
Пусни кода, дето не върви - да става лаф, иначе не е интересно за никого и едва ли ще получиш отговори.

Автор:  dexterJr [ Чет Яну 11, 2018 10:31 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

От къде да го пусне, то това е всичко. Или не?

Автор:  maguss4o [ Чет Яну 11, 2018 11:18 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Код:
int led1 = 9;      // PWM pin
int led2 = 10;      // PWM pin
int led3 = 11;      // PWM pin
int fadeTime = 5000;  // Overal fading time in ms

void fadeIn(int myArray[], int time){
  int arraySize = sizeof(myArray);
  double sectionFade = (time/(arraySize+2))/10;
  int br = 0;

  for(int i = 0; i<arraySize+1; i++){
    digitalWrite(myArray[i], LOW);
  }

  for(int a = 1; a<=arraySize+2; a++){
    for(int b = 0; b<=sectionFade; b+=5){
      Serial.println("-----------");
      int brightness = map(b, 0, sectionFade, 0, 127);
      for(int i = 1; i<=arraySize+1; i++){

        if(i == a){
          br = brightness;
        }else if((i % 2) == 0){
          br = brightness*2;
        }
       
        analogWrite(myArray[a-i], br);
       
      }
      delay(50);
    } 
  }

  for(int i = 0; i<arraySize+1; i++){
    digitalWrite(myArray[i], HIGH);
  }
 
}

void fadeOut(int myArray[], int time){
  int arraySize = sizeof(myArray);
  double sectionFade = time/(arraySize+2);

  for(int i = 0; i<arraySize+1; i++){
    digitalWrite(myArray[i], LOW);
  }
  delay(2000);
  // ????
}

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  Serial.begin(9600); 
  Serial.println("== SERIAL START ===");

}

void loop() {
  int myFadeIn[3] = {led1, led2, led3};
  fadeIn(myFadeIn, fadeTime);
 
  int myFadeOut[3] = {led3, led2, led1};
  fadeOut(myFadeOut, fadeTime);


}

Автор:  ike [ Пет Яну 12, 2018 12:41 am ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Този код, който си го пуснал какво точно не му работи? Какво прави грешно?

Автор:  maguss4o [ Пет Яну 12, 2018 5:52 am ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

ike написа:
Този код, който си го пуснал какво точно не му работи? Какво прави грешно?


Американски форум: питаш нещо и ти отговарят;
Руски форум: питаш нещо и теб те питат;
Български форум: питаш нещо и всички ти обясняват колко си тъп!


Та така де fade-ва се само Pin9, a другите мигат постоянно.

Пичове, помолих някой да ме насочи как да стигна до желания ефект. Вие тука ми се изредихте лаф да става. Единия иска да види код, другия - ама на тоз код ко му има, третия пита къде е main() на Arduino :|

if( $YouCanHelp == 1){
WriteApost();
}else{
Serial.print("Dont SPAM !!");
}

Автор:  stefan63 [ Пет Яну 12, 2018 8:28 am ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Пич, гледам си писал посреднощ - дано ти е тръгнал кода.
Че не знам какво e Arduino и как са му революционизирали имената много ме притесни , но за малко. Аз и Ц не знам ,още по-малко Ц за Ардуино , ама ще си позволя да ти коментирам малко кода.

Код:

int led1 = 9;      // PWM pin
int led2 = 10;      // PWM pin
int led3 = 11;      // PWM pin
int fadeTime = 5000;  // Overal fading time in ms

void fadeIn(int myArray[], int time){
  int arraySize = sizeof(myArray); //това тук е с подозрителен резултат
  double sectionFade = (time/(arraySize+2))/10;
   // double какъв тип е ? double float или double int ? Сложил си го за да ти мине делението?
  int br = 0;

  for(int i = 0; i<arraySize+1; i++){   //според мен индексът i се движи  между i=0
    digitalWrite(myArray[i], LOW);      //и дължината на масива i<arraySize 
                                                   
  }



Автор:  palavrov [ Пет Яну 12, 2018 10:31 am ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

maguss4o написа:
...
Американски форум: питаш нещо и ти отговарят;
Руски форум: питаш нещо и теб те питат;
Български форум: питаш нещо и всички ти обясняват колко си тъп!



Е, ти сам си му хванал цаката - иди и питай в американски форум вместо да ти се обяснява колко си тъп ... :mrgreen:

Автор:  maguss4o [ Пет Яну 12, 2018 12:20 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

stefan63 написа:
Пич, гледам си писал посреднощ - дано ти е тръгнал кода.
Че не знам какво e Arduino и как са му революционизирали имената много ме притесни , но за малко. Аз и Ц не знам ,още по-малко Ц за Ардуино , ама ще си позволя да ти коментирам малко кода.


int led1 = 9; // PWM pin
int led2 = 10; // PWM pin
int led3 = 11; // PWM pin
int fadeTime = 5000; // Overal fading time in ms

void fadeIn(int myArray[], int time){
int arraySize = sizeof(myArray); //това тук е с подозрителен резултат #това връща резултат 2, което като го сметнеш с нулевия елемент стават общо 3 елемента в масива.
double sectionFade = (time/(arraySize+2))/10;
// double какъв тип е ? double float или double int ? Сложил си го за да ти мине делението? #обикновен double, това връща резултат 5000/(2+2)/10=1500.00, което е секцията на 50% при 3 елемента в масив.
int br = 0;

for(int i = 0; i<arraySize+1; i++){ //според мен индексът i се движи между i=0
digitalWrite(myArray, LOW); //и дължината на масива i<arraySize #ако е само arraySize, i ще приеме стойности във for само 0,1, понеже i++ до 1<2... има две възможности, за да станат 0,1,2 (3 елемента в масива) - или да го направя i<=arraySize или i<arraySize+1. Което няма никаква разлика.

}




palavrov написа:
maguss4o написа:
...
[i]Американски форум: питаш нещо и ти отговарят;
Руски форум: питаш нещо и теб те питат;
Български форум: питаш нещо и всички ти обясняват колко си тъп!


Е, ти сам си му хванал цаката - иди и питай в американски форум вместо да ти се обяснява колко си тъп ... :mrgreen:


Колега ако няма какво да кажеш, просто си замълчи или всичките ти там 1500+ постове са ти като този ... ?

Автор:  stefan63 [ Пет Яну 12, 2018 12:30 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

Цитат:
#обикновен double, това връща резултат 5000/(2+2)/10=1500.00, което е секцията на 50% при 3 елемента в масив

5000/(2+2)/10=1500.00
Това в каква математика ? Ардуино?
Аз поне не съм чувал за "обикновен double".

Автор:  stefan63 [ Пет Яну 12, 2018 12:35 pm ]
Заглавие:  Re: Arduino - fadeIn(); fadeOut(); функции

void fadeIn(int myArray[], int time){
int arraySize = sizeof(myArray);

Според мене на врория ред arraySize ти се получава равно на 2 , не защото масивът ти е стри елемента, а защото е обявен от тип int на първия ред;
sizeof(myArray) е по-скоро макрос на препроцесора, а не реална изпълнима функция;

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/