Отговори на тема  [ 26 мнения ]  Отиди на страница 1, 2  Следваща
Arduino - fadeIn(); fadeOut(); функции 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Май 06, 2013 11:58 pm
Мнения: 15
Мнение 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);
}


Чет Яну 11, 2018 7:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
Tова трябва да е Ц...
Къде е main() или има начин да се каже ,че loop() e всъщност main()?


Чет Яну 11, 2018 7:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
На ардуиното е така setup() се изпълнява един път, loop() е основния цикъл :)

_________________
https://github.com/slav4ocom/


Чет Яну 11, 2018 7:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
Тоест код-листингът е генериран и се пита
Цитат:
void fadeOut(int myArray[], int time){
int arraySize = sizeof(myArray);
double sectionFade = time/(arraySize+2);

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


Чет Яну 11, 2018 8:27 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Май 06, 2013 11:58 pm
Мнения: 15
Мнение 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. Е да ама удрям на камък. Търсения ефект не се получава.


Чет Яну 11, 2018 8:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
Това е несериозно. :D
Пусни кода, дето не върви - да става лаф, иначе не е интересно за никого и едва ли ще получиш отговори.


Чет Яну 11, 2018 9:32 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Вто Юни 19, 2012 3:53 pm
Мнения: 118
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
От къде да го пусне, то това е всичко. Или не?


Чет Яну 11, 2018 10:31 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Май 06, 2013 11:58 pm
Мнения: 15
Мнение 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);


}


Чет Яну 11, 2018 11:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
Този код, който си го пуснал какво точно не му работи? Какво прави грешно?

_________________
Warriors of the Night, ASSEMBLER!!!


Пет Яну 12, 2018 12:41 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Май 06, 2013 11:58 pm
Мнения: 15
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
ike написа:
Този код, който си го пуснал какво точно не му работи? Какво прави грешно?


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


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

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

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


Пет Яну 12, 2018 5:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение 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 
                                                   
  }




Пет Яну 12, 2018 8:28 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
maguss4o написа:
...
Американски форум: питаш нещо и ти отговарят;
Руски форум: питаш нещо и теб те питат;
Български форум: питаш нещо и всички ти обясняват колко си тъп!



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

_________________
Мразя да мразя ...


Пет Яну 12, 2018 10:31 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Май 06, 2013 11:58 pm
Мнения: 15
Мнение 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+ постове са ти като този ... ?


Пет Яну 12, 2018 12:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
Цитат:
#обикновен double, това връща резултат 5000/(2+2)/10=1500.00, което е секцията на 50% при 3 елемента в масив

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


Пет Яну 12, 2018 12:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Arduino - fadeIn(); fadeOut(); функции
void fadeIn(int myArray[], int time){
int arraySize = sizeof(myArray);

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


Последна промяна stefan63 на Пет Яну 12, 2018 12:36 pm, променена общо 1 път



Пет Яну 12, 2018 12:35 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 26 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни