dimanoid
Members-
Постов
20 -
Зарегистрирован
-
Посещение
Информация
-
Город
воронеж
Электроника
-
Стаж в электронике
Не связан с электроникой
Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
Достижения dimanoid
-
помогите модифицировать код attiny85
dimanoid опубликовал тема в Arduino, ESP32, ESP8266, Raspberry Pi
скетч #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); } -
Там, где movlw?
- 2 886 ответов
-
- PIC
- Микроконтроллер
-
(и ещё 3 )
C тегом:
-
если сможешь, подскажи что поменять в коде чтобы на выходах при включении устанавливалось нулевое состояние. сейчас единичка, это мешает очень
- 2 886 ответов
-
- PIC
- Микроконтроллер
-
(и ещё 3 )
C тегом:
-
мамой клянусь я им пытался компилировать он вывалил кучу каких то ошибок не помню уже каких, а сейчас не меняя вообще ничего в коде откомпилировал в нем успешно все это потому, что я ваще не понимаю чо там написано и С от ассемблера не отличу
- 2 886 ответов
-
- PIC
- Микроконтроллер
-
(и ещё 3 )
C тегом:
-
побарабану 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! ********** мош я не тот какой то компилятор использую?
- 2 886 ответов
-
- PIC
- Микроконтроллер
-
(и ещё 3 )
C тегом:
-
люди, не моу ничем никак откомпилировать это: </p12f675> ЛИбо не может найти файл p12f675.INC либо не понимает #DEFINE что за хрень? попробуйте кто нибудь пожалуйста при этом файл p12f675.INC есть!!!
- 2 886 ответов
-
- PIC
- Микроконтроллер
-
(и ещё 3 )
C тегом:
-
не совсем. на логике, как я понял, невозможно избавиться от ложных срабатываний (я такие проекты находил в сети и там всегда что-то глючило). на контроллере можно сделать "чистую" работу прибора, чтобы при вращении энкодера это все не артефачило.
-
надо на мк. на логике не позволяют габариты.
-
прошу помощи зала, ибо в программировании и микроконтроллерах являюсь мягко говоря оленеводом, но логика подсказывает, что реализация задачи на этой малютке является самым оптимальным решением. что нужно: энкодер подключается к каким то входам МК предположительно через триггеры шмитта для устранения шумящей составляющей. внутри происходит волшебство, и на выходе мы имеем при повороте энкодера на один шаг в одну сторону управляющий импульс на одной ноге (желательно регулируемой длительности), при повороте в другую сторону на один шаг на другой ноге. выходы будут использоваться для управления оптроном, транзисторным ключом или чем то вроде того. благодарен за любую помощь!