Balon 22 kwietnia
Start z Marek KO02NI
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') || (inChar == '\r'))
stringComplete = true,







  PRZEJDŹ NA FORUM