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 |
|
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). |
|
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ść
|
|
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: 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: uint8_t i; for( i = 0; i < ile; i++ ) { for( j = 0; j < ile; j++ ) cout << PWM[ j ]; }
|
|
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ść. |
|
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. analogWrite( diodaPIN, wypelnienie );
Analog niekoniecznie oznacza wypełnienie. Mikrokotrolery mają normalne wyjścia Analogowe. Konfiguracja PWM z reguły wymusza również konfiguracje timera |
|
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ę) |
|
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.pngNatomiast 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. |
|
« 1 » 2 |