logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega32+ bascom - Jak w baskomie napisać porównywanie dwóch zmiennych z tabelą

Walczący z tankami 28 Sie 2014 11:36 1146 4
REKLAMA
  • #1 13914410
    Walczący z tankami
    Poziom 2  
    Panowie i Panie,

    Jestem początkujący, proszę o wyrozumiałość.

    Mam coś na kształt termostatu skleconego na Atmega32.
    Układ ma wykonywać następującą czynność:
    Zmierzyć temperaturę T1 na DS18b20 (to umiem, zrobiłem i działa, jes jes jes!!!)
    Zmierzyć temperaturę T2 na DS18b20 (to też umiem, też działa)
    A teraz trzeba wstawić taki warunek:
    Jeśli przy zmierzonej temperaturze T1 temperatura T2 jest mniejsza od zadanej (dla temperatury zmierzonej T1), to ma się załączyć jeden port. (samo załączanie portu też umiem, działa :D ).
    Problem jest taki że temperatury zadane występują w tabeli:
    t1 -- t zadana
    12 i więcej -- 67
    11 -- 67
    10 -- 67
    9 -- 67
    8 -- 67
    7 -- 67
    6 -- 67
    5 -- 68
    4 -- 69
    3 -- 71
    2 -- 73
    1 -- 75
    0 -- 77
    -1 -- 79
    -2 -- 81
    -3 -- 83
    -4 -- 85
    -5 -- 86
    -6 -- 88
    -7 -- 90
    -8 -- 92
    -9 -- 94
    -10 -- 96
    -11 -- 98
    -12 -- 100
    -13 -- 102
    -14 -- 104
    -15 -- 105
    -16 -- 107
    -17 -- 108
    -18 -- 110
    -19 -- 111
    -20 -- 112
    -21 -- 113
    -22 i mniej -- 114

    Czyli jest to 30 różnych wartości do zmierzenia/porównania.

    Ponieważ sam nie zrozumiałem, co powyżej napisałem podaję przykład dla zmierzonej temperatury T1=3 :-) :
    Jeśli przy zmierzonej T1=3 zmierzona t2< 71 wtedy włącz port na stan wysoki.

    Myślałem, żeby to zrobić przez If else (takie 30 piętrowe :-0)ale jest mały problem:
    Układ ma mierzyć występowanie warunku w 4 kanałach, dla każdego kanału zestaw temperatur jest inny. A zostało już tylko 47% pamięci procesora ;-(
    Może jest jakiś prostszy sposób niż if else?
    Pomożecie?
  • REKLAMA
  • #2 13914437
    witoldwitoldowicz
    Poziom 28  
    W jaki sposob zrobiles tabelke wedlug wzoru?
  • REKLAMA
  • #3 13914562
    Walczący z tankami
    Poziom 2  
    W tym sęk, że nie zrobiłem...
    Na razie doszedłem do tego, że mogę porównać ze sobą temperatury z różnych kanałów i na podstawie wzajemnych relacji pomiędzy nimi włączać lub wyłączać porty.
    Świetna zabawa i fajnie miga ale nie oto mi chodziło.

    Chyba że pytasz o to skąd te wartości w tabeli.
    Jeśli o to chodzi to są narzucone z góry i nie mogę ich zmienić.
    Przy minus 16 na jednym termometrze ma być ma być 107 lub więcej na drugim i kropka.
    Jak jest mniej to ma się włączyć przekaźnik.
    Zastanawiałem się czy nie wyliczać tego jakąś matematyczną funkcją ale to już kompletnie poza moim zasięgiem,...
  • REKLAMA
  • #4 13914592
    danthe
    Poziom 30  
    Użyj linii data. Widzę że elementy tablicy idą co 1 stopień celsjusza, więc poszereguj je od najmniejszych do największych.


    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #5 13915101
    Walczący z tankami
    Poziom 2  
    danthe dzięki,
    Spróbuję coś takiego napisać, wcześniej muszę poczytać o tych funkcjach.
    Za jakiś czas się odezwę i pochwalę jak mi poszło
    Jeszcze raz dzięki.
REKLAMA