74hc595 управление одним выходом
- Войдите на сайт для отправки комментариев
Сб, 26/09/2015 - 09:02
Доброго дня. Сталкнулся с такой проблемкой. использую 2 микрухи 74hc595. соединял их по вот этой схеме http://robocraft.ru/files/spi/2_shregs_schematics_preview.jpg . Код:
http://robocraft.ru/templates/skin/new/images/code.gif) rgb(248, 248, 248);">
#include <SPI.h>
enum { REG1 = 8, REG2 = 7 };
/* Копипаста не для нас, писать в регистр теперь будем так */
void writeShiftRegister(int ss_pin, uint8_t value)
{
digitalWrite(ss_pin, LOW);
SPI.transfer(value);
digitalWrite(ss_pin, HIGH);
}
void setup()
{
SPI.begin();
/* Всё то же, что и в первом примере, только для двух регистров */
pinMode(REG1, OUTPUT);
pinMode(REG2, OUTPUT);
writeShiftRegister(REG1, 0);
writeShiftRegister(REG2, 0);
}
void rotateLeft(uint8_t &bits)
{
uint8_t high_bit = bits & (1 << 7) ? 1 : 0;
bits = (bits << 1) | high_bit;
}
void rotateRight(uint8_t &bits)
{
uint8_t low_bit = bits & 1 ? (1 << 7) : 0;
bits = (bits >> 1) | low_bit;
}
void loop()
{
static uint8_t nomad1 = 1, nomad2 = 0x80;
writeShiftRegister(REG1, nomad1);
rotateLeft(nomad1);
writeShiftRegister(REG2, nomad2);
/* Для разнообразия погоняем биты во втором регистре в обратную сторону */
rotateRight(nomad2);
delay(1000 / 8);
}
Подскажите как допустим на первой микрухе поставить на выход № 4 режим HIGH , а на второй на ноге №6 тоже HIGH
Насколько я понял порты микрухи сначала заполняются значениями, далее через "защелку" происходит подтверждение
Глянь тута .
все решилось куда более простым способом, поиграв с калькулятором в режиме программиста получил следующую вещь
writeShiftRegister(REG1, 4);
writeShiftRegister(REG1, 8);
writeShiftRegister(REG1, 16);
а для двух микрух
writeShiftRegister(REG1, 2);
writeShiftRegister(REG2, 0);
writeShiftRegister(REG1, 8);
writeShiftRegister(REG2,0);
writeShiftRegister(REG1, 16);
writeShiftRegister(REG2, 0);
и тд. исходя из этого уже состряпал скеч который удовлетворяет всем моим потребностям.
заморачался далее
http://arduino.ru/Tutorial/registr_74HC595