Denníček - február 2020
Skočit na navigaci
Skočit na vyhledávání
Oliver naprogramoval prvú verziu rozpoznávania lopty:
int je_lopta(uint8_t r, uint8_t g, uint8_t b)
{
float h, s, v, max, min;
h = 0;
if (r < b){
if(r < g){
min = r;
}
else{
min = g;
}
}
else{
if (b < g){
min = b;
}
else{
min = g;
}
}
if (r > b){
if(r > g){
max = r;
if (max!= min){
h = 60*((g-b)/(max-min));
}
}
else{
max = g;
if (max!= min){
h = 60*(2+(b-r)/(max-min));
}
}
}
else{
if (b > g){
max = b;
if (max!= min){
h = 60*(4+(r-g)/(max - min));
}
}
else{
max = g;
if (max!= min){
h = 60*(2+(b-r)/(max - min));
}
}
}
v = max;
s = (max-min)/max;
if (h < 0){
h = h + 360;
}
if (h < 28 && h > 8 && s > 0.5 && v > 100){
return 1;
}
return 0;
}
//------------------
if (je_lopta(r,g,b) == 1)
{
cnt++;
}
Martin s Jankom pracoval na kalibrácií senzorov, zatiaľ máme toto:
#define senzor A7
#define switch 7
int val = 0;
int min, max;
void setup() {
Serial.begin(9600);
Serial.println("Zacinam kalibraciu.");
min=max=val=analogRead(senzor);
pinMode(switch, INPUT_PULLUP);
}
void loop() {
val=analogRead(senzor);
if(val<min)
min=val;
if(val>max)
max=val;
Serial.print(" val: ");
Serial.print(val);
Serial.print(" min: ");
Serial.print(min);
Serial.print(" max: ");
Serial.print(max);
Serial.println();
while(digitalRead(switch) == LOW) {
;
}
}
Milan dokončil a otestoval svoju historickú starožitnosť:
Matej pracoval na vlniacom zariadení, už nám vytvára na ružovom špagáte zaujímavé vlny:
Ondrej vylepšoval sadičku stromov:
Janko dokončil kalibráciu všetkých senzorov:
#define switch 7
int val = 0;
int min[6], max[6], prah[6];
void nacitaj_kalibraciu_z_EEPROM()
{
}
void setup()
{
Serial.begin(9600);
Serial.println("Zacinam kalibraciu.");
for (int i = 0; i < 6; i++)
{
if (i>3) val=analogRead (i+2);
else val=analogRead (i);
min[i]=max[i]=val;
}
pinMode(switch, INPUT_PULLUP);
if (digitalRead(switch) == LOW)
{
kalibracia();
}
else nacitaj_kalibraciu_z_EEPROM();
}
void test_senzorov()
{
for (int i=0; i<6; i++)
{
if (i>3) val=analogRead (i+2);
else val=analogRead (i);
if (val<prah[i]) Serial.print("0");
else Serial.print("1");
}
Serial.println();
delay(150);
}
void kalibracia()
{
while(digitalRead(switch) == LOW)
{
for (int i=0; i<6; i++)
{
Serial.print(val);
Serial.print("[");
Serial.print(min[i]);
Serial.print("-");
Serial.print(max[i]);
Serial.print("], ");
if (i>3) val=analogRead (i+2);
else val=analogRead (i);
if (val>max[i]) max[i]=val;
if (val<min[i]) min[i]=val;
}
Serial.println();
}
for (int i=0; i<6; i++)
{
//druha cast programu (vipocet prahovej hodnoty)
prah[i]=(2*max[i]+min[i])/3;
}
// zapisat kalibraciu do EEPROM
}
void loop()
{
delay(300);
test_senzorov();
}
Prečítali sme si návod k NXT segveju, ktorý poskladal Šimon, vymenili sme bloky, ktoré boli nastavené na NXT 2.0 farebný senzor (ktorý nemáme) za bloky pre svetelný senzor a čuduj sa svete, predsa len to chvíľu celkom pekne balansuje - veľa záleží na stabilnom osvetlení podložky:
Potom Šimon poskladal pascu na myši: