Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Arduino, tablice, pętle

Ostatnio zmodyfikowano 2017-06-28 07:08
Autor Wiadomość
ksardias
Temat założony przez niniejszego użytkownika
Arduino, tablice, pętle
» 2017-06-27 11:34:25
#include <iostream>

using namespace std;

int main()
{
  const unsigned int ile=50;
  float PWM[ile];
  unsigned int i;

 
  for (i=0;i<ile;++i)
  {
     cout <<""<<i+1<<". PWM: ";
     cin >>PWM;
     cin.ignore();
  }

return 0;
}
jest to początkowy etap, w arduiono cout zostanie zastąpiony, ale narazie pisze w code bloksie (jako że to jedyne znane mi środowisko(uczę się jakieś 6 miesięcy)) Program ma za zadanie 50 razy wysłać 50 wartości PWM(od 0 do 256, każdy następny o 5,12 więcej) i przypisać do każdego z PWM z czytaną wartość z arduiono
P-162858
maly7
» 2017-06-27 11:43:01
W czym masz dokładnie problem?
W pętli wykonującej się 50 razy dodawaj do jakiejś zmiennej 5 i zapisuj ją do tablicy.

I rada na przyszłość. Jeśli będziesz pisał na arduino i jeśli wiesz, że zmienna nie przekroczy wartości 255 to zamiast unsigned int używaj np. uint8_t (8 bitów).
P-162859
ksardias
Temat założony przez niniejszego użytkownika
» 2017-06-27 11:49:44
Dzięki,
w sumie problemem było to że chciałem to napisać w code blokcie, myślałem że tak będzie łątwiej,ale przecież, jak mam arduiono to teraz zrobić to tak? W jednej pętli dodaje 5 (PWM) i zapisuje każdą zwróconą wartość
P-162860
maly7
» 2017-06-27 12:00:25
Jeśli masz pod ręką arduino to nie widzę sensu, żeby pisać najpierw w codeblocksie.

Chcesz 50 razy wysłać 50 wartości z tablicy? Czy 50 razy różną wartość?
Jeśli 50 razy i za każdym razem 50 wartości:
Najpierw ustal wartości do wysłania. Możesz za każdym razem generować dane do wysłania, wpisać ręcznie wartości do tablicy albo zrobić to na początku programu za pomocą pętli:
C/C++
PWM[ 0 ] = 0;
uint8_t i;
for( i = 1; i < ile; i++ )
     PWM[ i ] = PWM[ i - 1 ] + 5;


A następnie wysyłać je znowu w pętli:
C/C++
uint8_t i;
for( i = 0; i < ile; i++ )
{
    for( j = 0; j < ile; j++ )
         cout << PWM[ j ]; // jakiś sposób wysyłania.
   
}
P-162861
ksardias
Temat założony przez niniejszego użytkownika
» 2017-06-27 12:11:35
Arduino

#define diodaPIN 3

int wypelnienie = 0;
int zmiana = 5;

void setup() {
pinMode(diodaPIN, OUTPUT);//Konfiguracja pinu jako wyjścia
}

void loop() {
analogWrite(diodaPIN, wypelnienie); //Generujemy sygnał o zadanym wypełnieniu

if (wypelnienie < 255) { //Jeśli wypełnienie mniejsze od 100%
wypelnienie = wypelnienie + zmiana; //Zwiększamy wypełnienie
} else {
wypelnienie = 0; //Jeśli wypełnienie większe od 100%, to wracamy na początek
}
 
delay(50); //Małe opóźnienie, aby efekt był widoczny
}
coś takiego potrzebowałem, tylko jeszcze teraz tak, zmieniając PWM czyli to wypełnienie, będę za każdą zmianą zaczytywał napięcie i natężenie, mnożył i chce żeby został ten PWM przy którym będzie największa moc. Czyli 50 razy różną wartość.
P-162862
mateczek
» 2017-06-27 16:05:31
PWM czyli to wypełnienie, będę za każdą zmianą zaczytywał napięcie i natężenie, mnożył i chce żeby został ten PWM przy którym będzie największa moc
P=U^2/R

W większości wypadków moc jest tym większa im większe napięcie. No chyba, że masz do czynienia z silnie nieliniowym układem. Dodatkowo napięcie jest proporcjonalne do współczynnika wypełnienia. Więc jeśli napięcie max =24V i współczynnik wypełnienia =50% To z reguły możesz przyjąć, iż układ jest zasilany z 12V.    

C/C++
analogWrite( diodaPIN, wypelnienie ); //Generujemy sygnał o zadanym wypełnieniu
Analog niekoniecznie oznacza wypełnienie. Mikrokotrolery mają normalne wyjścia Analogowe.
Konfiguracja PWM z reguły wymusza również konfiguracje timera

P-162873
ksardias
Temat założony przez niniejszego użytkownika
» 2017-06-27 21:48:05
Wielkie dzięki za zainteresowanie, w tym przypadku chodzi o generator prądu o wartości zmiennej mocy w zależności od rezystancji, PWM traktuje jako potencjometr (jeśli się mylę proszę poprawić) w zależności od pewnych (niezależnych wartości, nasłonecznienie) przy innej wartości rezystancji będzie moc maksymalna. Rozumiesz? (nie chce urazić, może to dla Ciebie oczywiste,jak coś to tyle co wiem to wytłumaczę)
P-162884
mateczek
» 2017-06-28 05:32:55
kolego strasznie mieszasz pojęciami. przez co ja naprawdę mam problemy z odgadnięciem co ty tak naprawdę chcesz zrobić.

PWM to nie jest potencjometr w żadnym wypadku. PWM to sygnał prostokątny o zmiennej długości impulsu i stałej ustalonej częstotliwości
http://i.iinfo.cz/urs​/pc_58_19-124042807498743.png

Natomiast jeśli chcesz sprawdzać "dopasowanie energetyczne" regulując PWM lub analogiem to nie tędy droga. Bo moc na odbiorniku rezystancyjnym będzie tym większa im większe dasz napięcie

Warunek dopasowania energetycznego trzeba dobrze zrozumieć:

Mając źródło napięcia o rezystancji wewnętrznej 50 [OHM] największą moc takie źródło odda do odbiornika o rezystancji również 50[OHM]. I to jest prawda.

natomiast mając wpływ na rezystancję źródła i zmieniając je od tak na 25[ohm] Moc dostarczona do odbiornika wzrośnie (moc będzie wyższa niż przy poprzedniej wartości).

Warunek dopasowania jednak dalej jest prawdziwy gdyż ta moc pomimo iż wzrośnie to i tak będzie mniejsza od maksymalnej możliwej do przekazania przy dopasowaniu.
P-162900
« 1 » 2
  Strona 1 z 2 Następna strona