чет/нечет

varistor
varistor аватар
Offline
Зарегистрирован: 03.02.2013

Прошу помощи, чет туплю.

Есть некий счетчик импульсов, например number. Результат счета (1 2 3 4 5 6 ...) нужно вывести на индикатор через один, в виде 1а 1в 2а 2в 3а 3в ... Понимаю что надо просто поделить пополам, будет например number2. Но как определить чет/нечет для второй переменной, например chet ? Туплю. 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

%2 ?

arduinec
Offline
Зарегистрирован: 01.09.2015

varistor пишет:

Но как определить чет/нечет

Можно взять самый младший разряд от переменной: number & 0x1

varistor
varistor аватар
Offline
Зарегистрирован: 03.02.2013
Вот начал с тестового скетча. Вывод на индикатор старшего разряда. Считает до 14. А как  вывести младший разряд?
// список выводов Arduino для подключения к разрядам a-g семисегментного индикатора
int pinH[8]={13,A4,2,4,3,A5,10,5};
int pinL[8]={A1,A3,9,7,8,A2,A0,6};
int pinIN=11;
// значения для вывода цифр 0-9
byte numbers[15] = { 
B00000011, B10011111, B00100101, B00001101, B10011001, // 0 1 2 3 4 
B01001001, B01000001, B00011111, B00000001, B00001001, // 5 6 7 8 9
B00000010, B10011110, B00100100, B00001100, B10011000  // 10 11 12 13 14
};
byte numA=B00010001;
byte numB=B11000001;

// переменная для хранения значения текущей цифры
int number=0;
// семисегментного индикатора
// переменная для хранения текущей пары
int chet=0;

void setup()
{
// Сконфигурировать контакты как выходы
for(int i=0;i<8;i++)
{
pinMode(pinH[i],OUTPUT);
pinMode(pinL[i],OUTPUT);
digitalWrite(pinH[i],HIGH);
digitalWrite(pinL[i],HIGH);
}
digitalWrite(pinIN,HIGH); // подтяжка на входе
}

void loop()
{
number=(number+1)%15;
showNumber(number/2); //  печать цифры
delay(1000);

}

// функция вывода цифры на семисегментный индикатор
void showNumber(int num)
{
for(int i=0;i<8;i++)
{
if(bitRead(numbers[num],7-i)==LOW) // зажечь сегмент
digitalWrite(pinH[i],LOW);
else // потушить сегмент
digitalWrite(pinH[i],HIGH);
}
}

 

 
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

/10
%10

varistor
varistor аватар
Offline
Зарегистрирован: 03.02.2013

Penni пишет:
/10 %10

а почему на 10 делить? Они же чередуются через 1. Тогда уж на 2 ?

varistor
varistor аватар
Offline
Зарегистрирован: 03.02.2013

Penni пишет:
%2 ?

О, понял. Спасибо

% оператор

Возвращает остаток от деления одного целого (int) операнда на другой.

 

varistor
varistor аватар
Offline
Зарегистрирован: 03.02.2013

пошел дальше ваять