NOWE POSTY | NOWE TEMATY | POPULARNE | STAT | RSS | KONTAKT | REJESTRACJA   Login: Hasło: RSS Facebook


HOME · Balon 22 kwietnia · Wpis #8070026
SP5MGS 05.04.2023 09:30:36


QTH: Marki Locator: KO02NI

Posty: 303 #8070026
Przygotowania pełną parą. Karol SQ5CPU (kiedyś uczeń naszej szkoły - w trakcie nauki zrobił licencję - teraz uczeń technikum elektronicznego i uczestnik projektu https://wstratosfere.pl/) pracuje nad kapsułą. Są już pierwsze wersje.











Teraz się tworzy pólka na zasilanie oraz system odcinania - za pomocą serwa lub drutu oporowego (do wyboru).

Kombinujemy tak - to jedna z wersji w trakcie konstruktywnej dyskusji. To na servo, ale przerobienie tego na odcinanie za pomocą drutu oporowego to pikuś. Pewnie da się inaczej, ale i tak mamy dobrą zabawę.


#include <,Servo.h>,

Servo myservo,

String inputString = "",
boolean stringComplete = false, // j.w.

// podrabiany "main" zamiast setup i loop - oszczędza zmienne globalne i pozwala użyć własnej pętli główniej
void setup()
inputString.reserve(100), // warto mieć to wywołane jak najwcześniej, a co najmniej przed Serial.begin

String nowy = "", // w podrabianym "main" nie musi już być globalne
int poludnik = 0, // nieglobalne trzeba ręcznie inicializować

myservo.attach(9),
//Ustawiam serwo zeby głupio nie ruszyło
myservo.write(6),

Serial.begin(57600),



while (stringComplete = true) // "własny" loop, żeby móc korzystać z "continue,"

noInterrupts(), // początek sekcji krytycznej (taki udawany mutex - tak jak https://pl.wikipedia.org/wiki/Sekcja_krytyczna)
if (stringComplete) // dodatkowo można sprawdzić np. czy pobrane ma długość w oczekiwanym zakresie - jak zakłócenie gdzieś zgubi, albo dołoży znak, albo jak arduino włączy się w już w trakcie ramki może zdekodować się coś innego od długości geograficznej
// Serial.println(inputString), sekcja krytyczna musi być jak najmniejsza i najszybsza - printowanie nie wchodzi w grę smutny Jak już, to trzeba skopiować do nowego string'a i wyprintować za sekcją krytyczną
for (int i = 39, i <, 44, i++) // jako stałe może dać w #define na początku
nowy = nowy + inputString[i],
else
interrupts(), // koniec sekcji krytycznej
continue,

interrupts(), // koniec sekcji krytycznej

Serial.println(nowy),
poludnik = nowy.toInt(),
Serial.println(poludnik),
if (poludnik >,= 2110) // Może warto, żeby np. trzy razy pod rząd warunek był spełniony na wypadek jakiegoś dziwnego zakłócenia?
//serwo wyciaga drucik z uchwytu albo dajemy tutaj polecanie smażenia sznurka przez drut oporowy
myservo.write(70),

// czyszczę string
nowy = "",
inputString = "",
stringComplete = false,




void loop()
, // bo mamy już pętlę głowną w setup czyli nie trzeba już


void serialEvent()
while (Serial.available())

char inChar = (char) Serial.read(),
// add it to the inputString:
inputString += inChar, // input string powinien być pewnie buforem kołowym (kiedyś widziałem gotową bibliotekę, albo napisać prosty na szybko) jeśli nie to chociaż zrobić zabezpieczenie, żeby nie urusł w nieskończoność jak nie dostanie '/n'

if ((inChar == '\n'oczko || (inChar == '\r'oczko)
stringComplete = true,






_________________
Grzesiek
Volenti non fit iniuria
https://wstratosfere.pl
https://www.facebook.com/sp5wwl

Zobacz ten wpis w wątku


Aby pisać na forum musisz się zalogować !!!

Załóż własne forum dyskusyjne na iq24.pl