Важная информация

User Tag List

Страница 6 из 6 ПерваяПервая ... 23456
Показано с 51 по 57 из 57

Тема: Программирование в Bascom для Arduino( сишники идут полем)

  1. #51
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,493
    Благодарностей: 729
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Это не значит, что япроходил ритуал их. Знать можно из разных источников.
    то есть ты сделал это утверждение с чужих слов?
    а ты несерьезный человек однако.
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  2. #52
    Activist
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    410
    Благодарностей: 40
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем, сделал я пищалку на арду. Текст программы на баскоме.

    $regfile = "m328pdef.dat"
    $crystal = 16000000

    Dim Invalue As Byte , Oldvalue As Byte
    Dim Tune As Word

    Ddrb = 2
    Didr0 = 1

    Admux = &B00100000
    Adcsra = &B11100111

    Ocr1ah = 2
    Ocr1al = 0
    Tccr1a = &B01000000
    Tccr1b = &B00001011

    Invalue = 0
    Oldvalue = 0

    Do
    Invalue = Adch And &B11111000
    If Invalue <> Oldvalue Then
    Tune = Invalue
    Tune = Tune + 100
    Ocr1ah = High(tune)
    Ocr1al = Low(tune)
    Oldvalue = Invalue
    End If
    Loop

    По программе арду начинает считывать аналоговый вход с выхода порта C нулевого разряда, и преобразовав данные записывает как предел счёта для таймера 1, частота которого подаётся на выход порта B первого разряда, к линии которого через сопротивление подключен пьезодинамик. На аналоговый вход включил переменный резистор, регулируя который, могу менять высоту звукового тона на пьезодинамике.
    Маска по and нужна для ступенчатости изменения тона, при такой маске как в программе будет 256/8=32 ступени тона.
    Что меня смутило - бинарник 344 байта. Мне кажется это много для такой простой программы. Хотелось бы узнать, если программу переписать на си, то сколько будет занимать бинарный файл?
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	IMG_20100818_050840.jpg 
Просмотров:	33 
Размер:	60.0 Кб 
ID:	65760  
    ¡ɹǝʌǝɹoɟ ɐʌɐɾ | Pascal forever!

  3. #53
    Veteran Аватар для JV-Soft
    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    1,657
    Благодарностей: 944
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Хотелось бы узнать, если программу переписать на си, то сколько будет занимать бинарный файл?
    Си-шники ушли полем и теперь тебе не скажем

    Арфы нет ,возьмите бубен
    Безумие это повторение одного и того же в ожидании другого результата.


    До 2016 JV-Soft (Eigma Group) http://speccy.info/Enigma_Group
    Сайт http://p-45.zzz.com.ua
    Восстановлен(2015) дополнен и в строю - Pentagon 512(256kb ROM 4 конфигурации ПЗУ)/turbo 7 мгц/кеш 2кб/covox/ AY/AY mouse/fdd robotron 5601/Nemo-Ide/10gb HDD (DNA-OS)
    Восстановлен(2015) и в строю - Харьков 128
    Восстановлен(2016) ZX-Дигитайзер

    Ждут паяльника - пентагон 48 , pentagon 128 , pentagon 128 купленный в 2015.
    [свернуть]

  4. #54
    Veteran Аватар для JV-Soft
    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    1,657
    Благодарностей: 944
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Так как готовой нужной библиотеки не оказалось в bascom ,то пишу свою библиотечку , для БП и зарядного с экранчиком 128x64 , по мимо команд точка ,линия ,окружность , прямоугольник , можно и графику выводить.



    PS Smalovsky, среда хорошая , только почему то разрабы не соизволили за 18 лет сделать библиотеку с поддержкой st7920 LCD , наверно 18 лет это не такой и срок ,к 30ти летию bascom может добавят

    - - - Добавлено - - -

    PPS так как для подключения экрана надо около 13 линий контроллера , а st7920 поддерживает SPI , я решил ,что управлять по трем проводам пусть и медленнее ,но зато ноги контроллера для других нужд остаются свободны.

    Арфы нет ,возьмите бубен
    Безумие это повторение одного и того же в ожидании другого результата.


    До 2016 JV-Soft (Eigma Group) http://speccy.info/Enigma_Group
    Сайт http://p-45.zzz.com.ua
    Восстановлен(2015) дополнен и в строю - Pentagon 512(256kb ROM 4 конфигурации ПЗУ)/turbo 7 мгц/кеш 2кб/covox/ AY/AY mouse/fdd robotron 5601/Nemo-Ide/10gb HDD (DNA-OS)
    Восстановлен(2015) и в строю - Харьков 128
    Восстановлен(2016) ZX-Дигитайзер

    Ждут паяльника - пентагон 48 , pentagon 128 , pentagon 128 купленный в 2015.
    [свернуть]

  5. Этот пользователь поблагодарил JV-Soft за это полезное сообщение:
    creator (08.08.2018)

  6. #55
    Activist
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    410
    Благодарностей: 40
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    JV-Soft, может, сделаешь игровую библиотеку для вывода тайлов. На ардуино уже сделали игровую библиотеку.
    Игры и библиотека.
    https://gamebuino.com/creations
    https://gamebuino.com/academy
    Если сделаешь, то на баскоме будет своя библиотека.
    ¡ɹǝʌǝɹoɟ ɐʌɐɾ | Pascal forever!

  7. #56
    Veteran Аватар для JV-Soft
    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    1,657
    Благодарностей: 944
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    JV-Soft, может, сделаешь игровую библиотеку для вывода тайлов.
    Как бы тебе объяснить , если хоть иногда следишь за моими поползновениями , то должен заметить , все что касается ретро я хочу клепать исключительно на старой базе , как тут пишут - ЛА3
    И мне честно ,не интересен перенос чего то старого на современную базу.
    Например этот проект БП и зарядного перекочевал на такой экран только из за удобства восприятия и комфорта для пользователя , но проект ни как не касается ретро , и графику из Exolon я туда кинул просто для проверки кода библиотеки )

    Арфы нет ,возьмите бубен
    Безумие это повторение одного и того же в ожидании другого результата.


    До 2016 JV-Soft (Eigma Group) http://speccy.info/Enigma_Group
    Сайт http://p-45.zzz.com.ua
    Восстановлен(2015) дополнен и в строю - Pentagon 512(256kb ROM 4 конфигурации ПЗУ)/turbo 7 мгц/кеш 2кб/covox/ AY/AY mouse/fdd robotron 5601/Nemo-Ide/10gb HDD (DNA-OS)
    Восстановлен(2015) и в строю - Харьков 128
    Восстановлен(2016) ZX-Дигитайзер

    Ждут паяльника - пентагон 48 , pentagon 128 , pentagon 128 купленный в 2015.
    [свернуть]

  8. #57
    Activist
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    410
    Благодарностей: 40
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сделал установку для изучения шагового двигателя.
    Нажмите на изображение для увеличения. 

Название:	IMG_20100904_060719.JPG 
Просмотров:	4 
Размер:	64.0 Кб 
ID:	65979

    Порт C - выходы на регистр 74hc595. Выводы регистра идут на семисегментный индикатор.
    Порт b - выходы четырех фаз шагового двігателя. Фазы проходят чеоез драйвер.
    Порт d - управление шаговым двигателем. К разряду 0 идёт кнопка поворота в лево, к разряду 1 - кнопка поворота в право, ко 2 второму разряду кнопка переключения шаг/автомат, к 4разряду светодиод индикации режима работы.
    Листинг:

    $regfile = "m328pdef.dat"
    $crystal = 16000000
    Declare Sub Pushdigit(byval Digit_value As Byte)
    Declare Sub View
    Declare Function Getdigit(byval Value As Byte) As Byte
    Declare Function Getphases(byval Value As Byte) As Byte

    Ds Alias Portc.0 ' ввод данных
    St_cp Alias Portc.1 ' сохранение данных в регистр
    Sh_cp Alias Portc.2 ' сдвиг и запись данных в нутрь регистра

    Dim Key As Byte , Scr As Byte , Phase_byte As Byte
    Dim Press_flag As Byte , Current_phase As Byte , Pause_flag As Byte , State As Byte
    Const Step_const = 1
    Const Auto_const = 2
    Const Auto_step = 1

    Press_flag = 0
    Current_phase = 1
    Scr = 0
    State = Step_const
    Restore Digit_segments

    Ddrd = &B00001000
    Ddrc = &B00000111
    Ddrb = &B00001111

    Disable Interrupts
    Eicra = 3
    Eimsk = 1
    Enable Interrupts
    On Int0 Interrupt0:

    Portb = 0
    Scr = Getdigit(current_phase)
    Scr = Scr Or &B10000000
    Call Pushdigit(scr)
    Call View

    General:

    Select Case State
    Case Step_const:
    Goto In_step
    Case Auto_const:
    Goto In_auto
    End Select

    Goto General

    In_auto:
    While State = Auto_const
    Key = Pind And &B00000011
    If Key = 2 Then
    Current_phase = Current_phase - 1
    If Current_phase < 1 Then
    Current_phase = 8
    End If
    Scr = Getdigit(current_phase)
    Call Pushdigit(scr)
    Call View
    Phase_byte = Getphases(current_phase)
    Portb = Phase_byte
    Waitms Auto_step
    Elseif Key = 1 Then
    Current_phase = Current_phase + 1
    If Current_phase > 8 Then
    Current_phase = 1
    End If
    Scr = Getdigit(current_phase)
    Call Pushdigit(scr)
    Call View
    Phase_byte = Getphases(current_phase)
    Portb = Phase_byte
    Waitms Auto_step
    Else
    Portb = 0
    Scr = Scr Or &B10000000
    Call Pushdigit(scr)
    Call View
    End If
    Wend
    Goto General

    In_step:
    While State = Step_const
    Key = Pind And &B00000011
    If Key = 1 Or Key = 2 Then
    If Press_flag = 0 Then
    Press_flag = 1
    If Key = 2 Then
    Current_phase = Current_phase - 1
    If Current_phase < 1 Then
    Current_phase = 8
    End If
    Scr = Getdigit(current_phase)
    Call Pushdigit(scr)
    Call View
    Phase_byte = Getphases(current_phase)
    Portb = Phase_byte
    Waitms 100
    Portb = 0
    Scr = Scr Or &B10000000
    Call Pushdigit(scr)
    Call View
    End If

    If Key = 1 Then
    Current_phase = Current_phase + 1
    If Current_phase > 8 Then
    Current_phase = 1
    End If
    Scr = Getdigit(current_phase)
    Call Pushdigit(scr)
    Call View
    Phase_byte = Getphases(current_phase)
    Portb = Phase_byte
    Waitms 100
    Portb = 0
    Scr = Scr Or &B10000000
    Call Pushdigit(scr)
    Call View
    End If
    End If
    Else
    Press_flag = 0
    End If
    Wend
    Goto General


    Interrupt0:

    If State = Step_const Then
    State = Auto_const
    Portd.3 = 1
    Else
    State = Step_const
    Portd.3 = 0
    End If
    Return

    Sub Pushdigit(byval Digit_value As Byte)
    Local Buffer As Byte , I As Byte
    Buffer = Digit_value
    For I = 0 To 7 ' цикл для записи байта данных в регистр
    If Buffer.7 = 0 Then
    Ds = 0
    Else
    Ds = 1
    End If ' если седьмой (последний) бит переменной равен 0, то отправляем 0 на ввод данных. (для индикатора с ОА. Для индикатора с ОК изменить условие не противоположное, таблицу данных не трогать!)
    Sh_cp = 1 ' подаем импульс на вход тактовых импульсов для сдвига регистра (запись в регистр)
    Sh_cp = 0
    Shift Buffer , Left , 1 ' сдвигаем все биты переменной влево на один бит
    Next I
    End Sub
    Sub View
    St_cp = 1
    St_cp = 0
    End Sub
    Function Getdigit(value As Byte) As Byte
    'If Value > 8 Then
    'Value = 8
    'End If
    Getdigit = Lookup(value , Digit_segments)
    End Function
    Function Getphases(byval Value As Byte) As Byte
    Value = Value And &B00001111
    Select Case Value
    Case 1:
    Getphases = &B00000001
    Case 2:
    Getphases = &B00000011
    Case 3:
    Getphases = &B00000010
    Case 4:
    Getphases = &B00000110
    Case 5:
    Getphases = &B00000100
    Case 6:
    Getphases = &B00001100
    Case 7:
    Getphases = &B00001000
    Case 8:
    Getphases = &B00001001
    End Select
    End Function
    Digit_segments:
    'Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001
    'Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000
    Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110
    Data &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111
    Последний раз редактировалось Smalovsky; 16.08.2018 в 13:01.
    ¡ɹǝʌǝɹoɟ ɐʌɐɾ | Pascal forever!

Страница 6 из 6 ПерваяПервая ... 23456

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Программирование в Pascal (сишники идут лесом)
    от Smalovsky в разделе Творчество
    Ответов: 22
    Последнее: 30.12.2016, 00:09
  2. Ответов: 0
    Последнее: 17.01.2015, 22:02
  3. Ответов: 4
    Последнее: 29.01.2009, 02:06

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •