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ę
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,



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ę
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'
stringComplete = true,