Перейти к содержанию

dimanoid

Members
  • Постов

    20
  • Зарегистрирован

  • Посещение

Информация

  • Город
    воронеж

Электроника

  • Стаж в электронике
    Не связан с электроникой

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения dimanoid

Новичок

Новичок (1/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. скетч #include "TrinketHidCombo.h" #define PIN_ENCODER_A 0 #define PIN_ENCODER_B 2 #define TRINKET_PINx PINB static uint8_t enc_prev_pos = 0; static uint8_t enc_flags = 0; void setup() { // set pins as input with internal pull-up resistors enabled pinMode(PIN_ENCODER_A, INPUT); pinMode(PIN_ENCODER_B, INPUT); digitalWrite(PIN_ENCODER_A, HIGH); digitalWrite(PIN_ENCODER_B, HIGH); TrinketHidCombo.begin(); // start the USB device engine and enumerate // get an initial reading on the encoder pins if (digitalRead(PIN_ENCODER_A) == LOW) { enc_prev_pos |= (1 << 0); } if (digitalRead(PIN_ENCODER_B) == LOW) { enc_prev_pos |= (1 << 1); } } void loop() { int8_t enc_action = 0; // 1 or -1 if moved, sign is direction // note: for better performance, the code will now use // direct port access techniques // http://www.arduino.cc/en/Reference/PortManipulation uint8_t enc_cur_pos = 0; // read in the encoder state first if (bit_is_clear(TRINKET_PINx, PIN_ENCODER_A)) { enc_cur_pos |= (1 << 0); } if (bit_is_clear(TRINKET_PINx, PIN_ENCODER_B)) { enc_cur_pos |= (1 << 1); } // if any rotation at all if (enc_cur_pos != enc_prev_pos) { if (enc_prev_pos == 0x00) { // this is the first edge if (enc_cur_pos == 0x01) { enc_flags |= (1 << 0); } else if (enc_cur_pos == 0x02) { enc_flags |= (1 << 1); } } if (enc_cur_pos == 0x03) { // this is when the encoder is in the middle of a "step" enc_flags |= (1 << 4); } else if (enc_cur_pos == 0x00) { // this is the final edge if (enc_prev_pos == 0x02) { enc_flags |= (1 << 2); } else if (enc_prev_pos == 0x01) { enc_flags |= (1 << 3); } // check the first and last edge // or maybe one edge is missing, if missing then require the middle state // this will reject bounces and false movements if (bit_is_set(enc_flags, 0) && (bit_is_set(enc_flags, 2) || bit_is_set(enc_flags, 4))) { enc_action = 1; } else if (bit_is_set(enc_flags, 2) && (bit_is_set(enc_flags, 0) || bit_is_set(enc_flags, 4))) { enc_action = 1; } else if (bit_is_set(enc_flags, 1) && (bit_is_set(enc_flags, 3) || bit_is_set(enc_flags, 4))) { enc_action = -1; } else if (bit_is_set(enc_flags, 3) && (bit_is_set(enc_flags, 1) || bit_is_set(enc_flags, 4))) { enc_action = -1; } enc_flags = 0; // reset for next time } } enc_prev_pos = enc_cur_pos; if (enc_action > 0) { TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP); } else if (enc_action < 0) { TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN); } else { TrinketHidCombo.poll(); // do nothing, check if USB needs anything done } } нужно чтобы вместо MMKEY_VOL_UP и MMKEY_VOL_DOWN на двух свободных пинах мигнул светодиод в зависимости от if (enc_action > 0) { ******* } вспышка светодиода на одном пине else if (enc_action < 0) {*********}; вспышка светодиода на другом пине встроить короче что то вроде { pinMode(3, OUTPUT); } void loop() { digitalWrite(3, HIGH); delay(100); digitalWrite(3, LOW); }
  2. если сможешь, подскажи что поменять в коде чтобы на выходах при включении устанавливалось нулевое состояние. сейчас единичка, это мешает очень
  3. мамой клянусь я им пытался компилировать он вывалил кучу каких то ошибок не помню уже каких, а сейчас не меняя вообще ничего в коде откомпилировал в нем успешно все это потому, что я ваще не понимаю чо там написано и С от ассемблера не отличу
  4. побарабану Build C:\project\a for device 12F675 Using driver C:\Program Files (x86)\HI-TECH Software\PICC\9.71a\bin\picc.exe Make: The target "C:\project\Untitled.p1" is out of date. Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.71a\bin\picc.exe" -C C:\project\Untitled.asm -q --chip=12F675 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" Warning [107] C:\project\Untitled.asm; 11.7 illegal # directive "DEFINE" Warning [107] C:\project\Untitled.asm; 12.7 illegal # directive "DEFINE" Warning [107] C:\project\Untitled.asm; 13.7 illegal # directive "DEFINE" Warning [107] C:\project\Untitled.asm; 14.7 illegal # directive "DEFINE" Error [876] C:\Program Files (x86)\HI-TECH Software\PICC\9.71a\include\p12f675.INC; 33. syntax error Error [876] Untitled.pre; 48. syntax error Error [876] Untitled.pre; 54. syntax error Error [876] Untitled.pre; 55. syntax error Error [876] Untitled.pre; 56. syntax error Error [876] Untitled.pre; 57. syntax error Error [876] Untitled.pre; 58. syntax error Error [876] Untitled.pre; 59. syntax error Error [876] Untitled.pre; 60. syntax error Error [876] Untitled.pre; 61. syntax error Error [876] Untitled.pre; 62. syntax error Error [876] Untitled.pre; 63. syntax error Error [876] Untitled.pre; 64. syntax error Error [876] Untitled.pre; 65. syntax error Error [876] Untitled.pre; 66. syntax error Error [876] Untitled.pre; 67. syntax error Error [876] Untitled.pre; 68. syntax error Error [876] Untitled.pre; 69. syntax error Error [876] Untitled.pre; 72. syntax error Error [876] Untitled.pre; 73. syntax error Error [876] Untitled.pre; 74. syntax error Advisory[1] too many errors (21) ********** Build failed! ********** мош я не тот какой то компилятор использую?
  5. люди, не моу ничем никак откомпилировать это: </p12f675> ЛИбо не может найти файл p12f675.INC либо не понимает #DEFINE что за хрень? попробуйте кто нибудь пожалуйста при этом файл p12f675.INC есть!!!
  6. не совсем. на логике, как я понял, невозможно избавиться от ложных срабатываний (я такие проекты находил в сети и там всегда что-то глючило). на контроллере можно сделать "чистую" работу прибора, чтобы при вращении энкодера это все не артефачило.
  7. надо на мк. на логике не позволяют габариты.
  8. прошу помощи зала, ибо в программировании и микроконтроллерах являюсь мягко говоря оленеводом, но логика подсказывает, что реализация задачи на этой малютке является самым оптимальным решением. что нужно: энкодер подключается к каким то входам МК предположительно через триггеры шмитта для устранения шумящей составляющей. внутри происходит волшебство, и на выходе мы имеем при повороте энкодера на один шаг в одну сторону управляющий импульс на одной ноге (желательно регулируемой длительности), при повороте в другую сторону на один шаг на другой ноге. выходы будут использоваться для управления оптроном, транзисторным ключом или чем то вроде того. благодарен за любую помощь!
  9. я радиолюбитель руками. мне схему дай, я спаяю. а радиолюбитель головой знает как она работает и может сам чото придумать. поэтому и спрашиваю у более сведущих.
  10. да было дело... вообще чтобы пить пиво не обязательно знать как его делают))))
  11. А не будет всякий шум и помехи через землю в сигнальную цепь проникать если кондюк до делителя поставить?
  12. ну из стандартного ряда это получается неполярный электролит на 47мкф? а как отреагирует схема, если кондюк после делителя поставить?
×
×
  • Создать...