keybrd library is an open source library for creating custom-keyboard firmware.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
Repozitorijs ir arhivēts. Tam var aplūkot failus un to var klonēt, bet nevar iesūtīt jaunas izmaiņas, kā arī atvērt jaunas problēmas/izmaiņu pieprasījumus.

Scanner_ShiftRegsPISOSingleRow.cpp 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "Scanner_ShiftRegsPISOSingleRow.h"
  2. /* constructor
  3. Parameter strobeOn is not used.
  4. */
  5. Scanner_ShiftRegsPISOSingleRow::Scanner_ShiftRegsPISOSingleRow(const bool strobeOn,
  6. const uint8_t slaveSelect, const uint8_t byte_count)
  7. : slaveSelect(slaveSelect), byte_count(byte_count)
  8. {
  9. pinMode(slaveSelect, OUTPUT);
  10. }
  11. /* init() is called once for each row from Row constructor.
  12. */
  13. void Scanner_ShiftRegsPISOSingleRow::init(const uint8_t strobePin)
  14. {
  15. //empty function
  16. }
  17. /* begin() should be called once from sketch setup().
  18. Initializes shift register's shift/load pin.
  19. */
  20. void Scanner_ShiftRegsPISOSingleRow::begin()
  21. {
  22. SPI.begin();
  23. digitalWrite(slaveSelect, HIGH);
  24. }
  25. /* scan() returns state of the shift register's input pins.
  26. Parameter strobePin is not used.
  27. No strobe pin is needed, the shift register is wired so the strobe is effectivley always "on".
  28. Bit patterns are 1 bit per key.
  29. */
  30. read_pins_t Scanner_ShiftRegsPISOSingleRow::scan(const uint8_t strobePin)
  31. {
  32. read_pins_t readState = 0; //bits, 1 means key is pressed, 0 means released
  33. //read all the column pins
  34. digitalWrite(slaveSelect, LOW); //load parallel inputs to the register
  35. digitalWrite(slaveSelect, HIGH); //shift the data toward a serial output
  36. SPI.transfer(&readState, byte_count);
  37. return readState;
  38. }