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
).
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?
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
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?