Ответы пользователя по тегу Arduino
  • Работа с тактовой кнопкой на Arduino

    @vanyamba-electronics
    Видимо, ошибка в схеме. Надо резистор не к D13, а к соседнему GND.
    Example_button_scheme-350x300.png
    Ответ написан
    Комментировать
  • Как решить проблему с прерываниями на ATMega328P-PU?

    @vanyamba-electronics
    В даташите очепятка про таблицу векторов. RJMP -это relative jmp, он занимает 2 байта. Нужно использовать JMP, который занимает 4 байта. По четыре байта на каждый вектор.
    Button_1_LED.cpp.elf:     формат файла elf32-avr
    
    Дизассемблирование раздела .text:
    
    00000000 <__vectors>:
       0:   0c 94 63 00     jmp     0xc6    ; 0xc6 <__ctors_end>
       4:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
       8:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
       c:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      10:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      14:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      18:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      1c:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      20:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      24:   0c 94 c3 00     jmp     0x186   ; 0x186 <__vector_9>
      28:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      2c:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      30:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      34:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      38:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      3c:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      40:   0c 94 5c 04     jmp     0x8b8   ; 0x8b8 <__vector_16>
      44:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      48:   0c 94 09 03     jmp     0x612   ; 0x612 <__vector_18>
      4c:   0c 94 50 03     jmp     0x6a0   ; 0x6a0 <__vector_19>
      50:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      54:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      58:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      5c:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      60:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
      64:   0c 94 8b 00     jmp     0x116   ; 0x116 <__bad_interrupt>
    
    00000116 <__bad_interrupt>:
      116:   0c 94 00 00   jmp      0           ; 0x0 <__vectors>
    Ответ написан
    2 комментария
  • Проблема подключения Arduino uno на Atmega8a-pu к Android 4.2.1

    @vanyamba-electronics
    Нужно добавить плату в файл конфигурации avrdude.
    Ответ написан
    Комментировать
  • Как научить Arduino понимать .stl / .dwg ?

    @vanyamba-electronics
    Автоматически составить алгоритм проще, чем кажется. Данная задача сводится к написанию алгоритма 3D-рендеринга.
    Сперва задаются параметры viewport-а. То есть размер листа, разрешение рисования (шаг двигателей по X и Y). Так определяется параметр scale = отношение длины к высоте (4:3, 5:4, 16:9 и т.п.). Это нужно для того, чтобы пользователь мог на экране монитора подвигать камеру, повертеть модель - чтобы задать программе, что именно он хочет увидеть в результате.
    Затем задаются параметры камеры - положение в пространстве, фокусное расстояние, глубина прорисовки, резкость, цвет тумана, визуальные фильтры, яркость, контрастность, насыщенность и т.п.
    После этого задаётся матрица трансформации модели - как её следует повернуть и сместить.
    После этого можно приступать к рендерингу - непосредственно рисованию.
    После того, как двухмерная проекция получена, её можно нарисовать с помощью принтера, в данном случае Arduino и манипулятора с фломастером.
    Ответ написан
    Комментировать
  • Как задать множество типов для callback в C++?

    @vanyamba-electronics
    Нельзя. Да и ни к чему оно. Функция bar() должна быть типа timer_callback, а функция foo() может быть любого вида.
    Ответ написан
    Комментировать
  • Прерываниями по таймерам Arduino MEGA?

    @vanyamba-electronics
    #include <ve_avr.h> // Используется библиотека VEduino
    #include "myheader.h"
    
    /* 
     * Эта функция должна быть определена в заголовке myheader.h
     * чтобы её код не вызывался, а был включен в тело функции-обработчика прерывания.
     */
    inline void MyInterupt() 
    { 
    	if (flag) { 
    		flag=false; 
    	} 
    	else{ 
    		flag=true; 
    	} //обработчик вашего прерывания 
    } 
    
    volatile unsigned char tcnt2;
    volatile bool flag;
    
    void setup()
    {
    	flag = true;
    	DEV_TICTRL2.overflowIntDisable();
    	DEV_TIMER2.setWaveGenMode(Timer2::Normal);
    	DEV_TIMER2.setPrescaler(Prescaler2::Prescaler64);
    	DEV_ASYNCST.setTimer2ClkSrc(AsyncStatus::CLKIO);
    	tcnt2 = 1;
    	DEV_TICTRL2.overflowIntEnable();
    	enableInterrupts();
    }
    
    void loop() { } 
    
    //****************обработчик прерывания******************** 
    ISR(TIMER2_OVF_vect)
    { 
    	DEV_TIMER2.setCounter(tcnt2); 
    	MyInterupt(); 
    }
    Ответ написан
    Комментировать