{"id":2255,"date":"2026-03-17T11:13:36","date_gmt":"2026-03-17T02:13:36","guid":{"rendered":"https:\/\/hiuchi.mydns.jp\/wordpress\/?page_id=2255"},"modified":"2026-03-20T14:57:23","modified_gmt":"2026-03-20T05:57:23","slug":"%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3box%e3%81%ae%e8%a3%bd%e4%bd%9c","status":"publish","type":"page","link":"https:\/\/hiuchi.mydns.jp\/wordpress\/?page_id=2255","title":{"rendered":"\u30ea\u30e2\u30b3\u30f3BOX\u306e\u88fd\u4f5c"},"content":{"rendered":"<p>\u5f53\u5c40\u306e\u30e1\u30a4\u30f3\u7121\u7dda\u6a5f\u306fredpitaya\u30dc\u30fc\u30c9\u3068SDR\u30bd\u30d5\u30c8thetis\u3092\u7d44\u307f\u5408\u308f\u305b\u305fSDR\u6a5f\u3067\u3059\u3002<br \/>\n5\u5e74\u7a0b\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u307e\u3067\u3001thetis\u3092\u30de\u30a6\u30b9\u64cd\u4f5c\u3068redpitaya\u306b\u76f4\u63a5\u63a5\u7d9a\u306e\u5916\u4ed8\u3051PTT\u30b9\u30a4\u30c3\u30c1\u3067\u64cd\u4f5c\u904b\u7528\u3057\u3066\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u3068\u3053\u308d\u304c\u3001\u6700\u8fd1\u306b\u306a\u3063\u3066Ham Log, HQSL, Free DV\u7b49\u306e\u7121\u7dda\u95a2\u9023\u30bd\u30d5\u30c8\u306e\u5229\u7528\u304c\u5897\u3048\u3001\u30de\u30a6\u30b9\u306e\u30d5\u30a9\u30fc\u30ab\u30b9\u306e\u5207\u308a\u66ff\u3048\u304c\u983b\u7e41\u306b\u306a\u308a\u3001\u307e\u305f\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u306e\u6240\u5728\u3082\u8996\u529b\u306e\u8870\u3048\u3067\u78ba\u8a8d\u304c\u96e3\u3057\u304f\u306a\u3063\u3066\u304d\u307e\u3057\u305f\u3002\u305d\u3093\u306a\u3053\u3068\u304b\u3089thetis\u306e\u30de\u30a6\u30b9\u306e\u8aa4\u64cd\u4f5c\u3067\u610f\u56f3\u3057\u306a\u3044\u5468\u6ce2\u6570\u5909\u66f4\u7b49\u3092\u3057\u3066\u3057\u307e\u3046\u306a\u3069\u306e\u4e8b\u8c61\u304c\u591a\u304f\u306a\u3063\u3066\u304d\u307e\u3057\u305f\u3002\u305d\u3053\u3067\u3001thetis\u306e\u64cd\u4f5c\u306f\u3001\u30de\u30a6\u30b9\u3092\u4f7f\u308f\u305a\u884c\u3048\u308b\u69d8\u3001\u6b21\u306e\u4ed5\u69d8\u306e\u30ea\u30e2\u30b3\u30f3BOX\u3092\u88fd\u4f5c\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>\u300c\u4ed5\u69d8\u300d<\/p>\n<p>\uff11\uff0eUSB\u63a5\u7d9a\u3067\u3001\u96fb\u6e90\u306fUSB\u30d0\u30b9\u304b\u3089\u4f9b\u7d66\u3055\u308c\u308b\u3053\u3068\u3002<\/p>\n<p>\uff12\uff0ePTT\u3001\u97f3\u91cf\u5897\u6e1b\u64cd\u4f5c\u3092\u62bc\u3057\u30dc\u30bf\u30f3SW\u3067\u884c\u3048\u308b\u3053\u3068\u3002<\/p>\n<p>\uff13\uff0e\u9001\u53d7\u4fe1\u5468\u6ce2\u6570\u3092\u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u3067\u53ef\u5909\u3067\u304d\u308b\u3053\u3068\u3002<\/p>\n<p>\uff14.\u00a0 \u9001\u53d7\u4fe1\u5468\u6ce2\u6570\u3001\u5468\u6ce2\u6570\u5897\u5206\u5024\u3001\u97f3\u91cf\u306e\u73fe\u5728\u5024\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u3002<\/p>\n<p>\uff15\uff0ethetis\u3068\u306e\u901a\u4fe1\u4e0d\u5177\u5408\u6642\u306b\u5099\u3048\u3001\u518d\u63a5\u7d9a\u3001\u30ea\u30bb\u30c3\u30c8\u304c\u62bc\u3057\u30dc\u30bf\u30f3SW\u3067\u884c\u3048\u308b\u3053\u3068\u3002<\/p>\n<p>\uff16\uff0ethetis\u3068\u306e\u9593\u306e\u901a\u4fe1\u30d7\u30ed\u30c8\u30b3\u30eb\u306fPOWE SDR\u306eCAT\u30b3\u30de\u30f3\u30c9\u5f62\u5f0f\u306b\u3088\u308b\u3053\u3068<\/p>\n<p>\u524d\u8a18\u4ed5\u69d8\u3092\u76ee\u6a19\u306b\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u90e8\u5206\u306f\u30de\u30a4\u30b3\u30f3\u30dc\u30fc\u30c9Raspberry Pi Pico\u3092\u4f7f\u7528\u3057\u3001\u958b\u767a\u74b0\u5883thonny\u4e0a\u3067microphython\u3067\u884c\u3063\u305f\u3002<\/p>\n<div id=\"attachment_2262\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2262\" class=\"wp-image-2262 size-large\" src=\"https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/boad-scaled-e1773712880134-1024x768.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/boad-scaled-e1773712880134-1024x768.jpg 1024w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/boad-scaled-e1773712880134-300x225.jpg 300w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/boad-scaled-e1773712880134-768x576.jpg 768w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/boad-scaled-e1773712880134-1536x1152.jpg 1536w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/boad-scaled-e1773712880134-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><p id=\"caption-attachment-2262\" class=\"wp-caption-text\">\u30d6\u30ec\u30c3\u30c9\u30dc\u30fc\u30c9\u3067\u8a66\u4f5c<\/p><\/div>\n<div id=\"attachment_2261\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2261\" class=\"wp-image-2261 size-large\" src=\"https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/rimocon-768x1024.jpg\" alt=\"\" width=\"640\" height=\"853\" srcset=\"https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/rimocon-768x1024.jpg 768w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/rimocon-225x300.jpg 225w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/rimocon-1152x1536.jpg 1152w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/rimocon-1536x2048.jpg 1536w, https:\/\/hiuchi.mydns.jp\/wordpress\/wp-content\/uploads\/2026\/03\/rimocon-scaled.jpg 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><p id=\"caption-attachment-2261\" class=\"wp-caption-text\">\u4e00\u5fdc\u5b8c\u6210<\/p><\/div>\n<p>\u30bd\u30fc\u30b9\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4ee5\u4e0b\u306b\u793a\u3059\u3002<\/p>\n<p>\u5927\u304d\u306a\u6587\u5b57\u8868\u793a\u306e\u305f\u3081mfont\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u306e\u8aad\u307f\u53d6\u308a\u306e\u305f\u3081\u306b\u306fRotaryIRQ\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u305f\u3002<\/p>\n<pre>\r\n## \u3000ver 1.01\r\n# 1.00  \u521d\u671f\u30d0\u30fc\u30b8\u30e7\u30f3\u3000\u30dd\u30fc\u30ea\u30f3\u30b0\u65b9\u5f0f\r\n# 1.01  UART\u306e\u53d7\u4fe1\u51e6\u7406\u3092\u5272\u308a\u8fbc\u307f\u30cf\u30f3\u30c9\u30e9\u3067\u884c\u3046\u3088\u3046\u306b\u5909\u66f4\r\n\r\nfrom ssd1306 import SSD1306_I2C\r\nfrom rotary_irq_rp2 import RotaryIRQ\r\nfrom machine import Pin, I2C, UART\r\nfrom mfont import mfont\r\nimport time\r\n\r\nsend_wait = 20\r\n\r\n'''\r\n###### raspberry pi pico (RP pico)\u304b\u3089\u5468\u8fba\u3078\u306e\u63a5\u7d9a\u3000########\r\n\r\n[RP pico]\u3000\u3000\u3000\u3000[ Encoder, SW, \u30bf\u30af\u30c8SW ]\r\nGPIO04\u3000\u30fc\u30fc\u3000\u9001\u4fe1\u8868\u793a\u8d64\u8272LED\r\nGPIO05\u3000\u30fc\u30fc\u3000\u30bf\u30af\u30c8SW(\u5468\u6ce2\u6570\u30b9\u30c6\u30c3\u30d7\u5207\u308a\u66ff\u3048)\u3000\u3000\r\nGPIO18\u3000\u30fc\u30fc\u3000\u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u3000\u3000\u3000\u3000\u3000 \u3000\r\nGPIO19\u3000\u30fc\u30fc\u3000\u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\r\nGND \u30fc\u30fc\u30fc\u30fc\u3000\u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\uff08GND\uff09\r\nGPIO20\u3000\u30fc\u30fc\u3000PTT\u30b9\u30a4\u30c3\u30c1\r\nGPIO21\u3000\u30fc\u30fc\u3000\u30bf\u30af\u30c8SW(\u97f3\u91cf\u5927\u304d\u304f)\r\nGPIO22\u3000\u30fc\u30fc\u3000\u30bf\u30af\u30c8SW(\u97f3\u91cf\u5c0f\u3055\u304f)\r\n\r\n[RP pico]\u3000\u3000[\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4 128 x 32]\r\nGPIO14\u3000\u30fc\u30fc\u3000OLED\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4SCL\r\nGPIO15\u3000\u30fc\u30fc OLED\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4SDA\r\n3.3_EN \u30fc\u30fc\u3000RESET SW\r\nGND   \u3000\u30fc\u30fc\u3000GND\r\n3.3v  \u3000\u30fc\u30fc\u3000VCC\r\n\r\n[RP pico]   [FT232RL\u30e2\u30b8\u30e5\u30fc\u30eb]\r\nGPIO16\u3000\u30fc\u30fc\u3000RX\r\nGPIO17\u3000\u30fc\u30fc\u3000TX\r\nGND   \u3000\u30fc\u30fc\u3000GND\r\nVSYS  \u3000\u30fc\u30fc\u30005V out\r\n\r\n\u300c\u96fb\u6e90\u306b\u3064\u3044\u3066\u300d\r\n RP pico\u306e\u96fb\u6e90\u306fFT232RL\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089\u4f9b\u7d66\u3001FT232RL\u30e2\u30b8\u30e5\u30fc\u30eb\r\n \u306fPC\u3068USB\u63a5\u7d9a\u3055\u308c\u308b\u306e\u3067USB\u7d66\u96fb\u3068\u306a\u308b\u3002\r\n##########################################################\r\n'''\r\n\r\ni2c = I2C(1, scl=Pin(15), sda=Pin(14), freq = 400_000)    # I2C\u3092\u521d\u671f\u5316\r\noled = SSD1306_I2C(128, 32, i2c) \t      # \u5e45=128\u3001\u9ad8\u3055=32 \u3067SSD1306\u3092\u521d\u671f\u5316\r\n\r\n# \u3000\u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u306e\u521d\u671f\u5316\u3000( GPIO\u30d4\u30f3\u306e\u6307\u5b9a\u3000& \u521d\u671f\u5024)\r\nrotary_encoder = RotaryIRQ(\r\n    pin_num_clk=18,\r\n    pin_num_dt=19,\r\n    min_val=0,\r\n    max_val=1000,\r\n    reverse=True,\r\n    range_mode=RotaryIRQ.RANGE_UNBOUNDED,\r\n)\r\n\r\n#  GPIO20\u304b\u308922, 5\u3092\u5165\u529b\u30d4\u30f3\u3068\u3057\u3001\u30d7\u30eb\u30a2\u30c3\u30d7\u3059\u308b\u3002\r\nptt_pin = Pin(20, Pin.IN, Pin.PULL_UP)     # PTT\u3000SW\r\nvolinc_pin = Pin(21, Pin.IN, Pin.PULL_UP)  # \u97f3\u91cf\u5897\u5927\r\nvoldec_pin = Pin(22, Pin.IN, Pin.PULL_UP)  # \u97f3\u91cf\u6e1b\u5c11\r\nfstep_pin = Pin(5,Pin.IN, Pin.PULL_UP)     # \u5468\u6ce2\u6570\u5909\u5316\u91cf\r\n\r\n# \u9001\u4fe1\u3092\u793a\u3059LED\u70b9\u706f\u30dd\u30fc\u30c8\r\ntx_led = Pin(4, Pin.OUT)  # \u9001\u4fe1\u8868\u793aLED\r\n\r\n# \u30d5\u30a9\u30f3\u30c8\u306e\u8868\u793a\r\ndef drawFont(self, font, x, y, w, h, flg=False):\r\n    bn = (w+7)>>3\r\n    py = y\r\n    for i in range(0, len(font), bn):\r\n        px = x\r\n        for j in range(bn):\r\n            for k in range(8 if (j+1)*8 <=w else w % 8):\r\n                self.pixel(px+k,py, 1 if font[i+j] &#038; 0x80>>k else 0) \r\n            px+=8\r\n        py+=1\r\n    if flg:\r\n        self.show()\r\n\r\n# \u6539\u884c\r\ndef newLine(self):\r\n    self.x=0\r\n    if self.y+self.mf.fs*2 > 32:\r\n        self.scroll(0, -self.mf.fs)\r\n        self.fill_rect(0, self.y, 128, 32-self.y, 0)\r\n        self.show()\r\n    else:\r\n        self.y=self.y+self.mf.fs\r\n    \r\n# \u30c6\u30ad\u30b9\u30c8\u306e\u8868\u793a\r\ndef drawText(self, text, x, y, fs, wt=0):\r\n    self.x = x\r\n    self.y = y\r\n    \r\n    # \u30d5\u30a9\u30f3\u30c8\u306e\u8a2d\u5b9a\r\n    self.mf = mfont(fs)\r\n    self.mf.begin()\r\n\r\n    # \u30c6\u30ad\u30b9\u30c8\u8868\u793a\r\n    for c in text:\r\n        if c == '\\n': # \u6539\u884c\u30b3\u30fc\u30c9\u306e\u51e6\u7406\r\n            self.newLine()\r\n            continue\r\n        code = ord(c) \r\n        font = self.mf.getFont(code)\r\n        if self.x+self.mf.getWidth()>=128:\r\n            self.newLine()\r\n        self.drawFont(font, self.x, self.y, self.mf.getWidth(), self.mf.getHeight(), True)\r\n        if wt:\r\n            time.sleep_ms(wt)\r\n        self.x+=self.mf.getWidth()\r\n    self.mf.end()\r\n\r\n# SSD1306_I2C\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30fb\u30e1\u30bd\u30c3\u30c9\u306e\u8ffd\u52a0\r\nSSD1306_I2C.drawText = drawText\r\nSSD1306_I2C.drawFont = drawFont\r\nSSD1306_I2C.newLine  = newLine\r\n\r\n# thetis\u306e\u73fe\u5728\u97f3\u91cf\u3092\u554f\u3044\u5408\u308f\u305b\u308b\u3000\r\ndef inq_vol():\r\n    uart.write(b\"ZZLA;\")\r\n    time.sleep_ms(send_wait)    \r\n\r\n# RX1\u306e\u97f3\u91cf\u3092vol\u306e\u5024\u306b\u8a2d\u5b9a\r\ndef set_vol():\r\n    w = \"00\"+str(rvol)\r\n    com = w[-3:]+\";\"\r\n    uart.write(b\"ZZLA\"+com)\r\n\r\ndef uart_reset():\r\n    uart = UART(0, baudrate=19200, tx=Pin(0), rx=Pin(1),\r\n                 timeout = 50, flow = UART.RTS|UART.CTS)\r\n\r\n# \u73fe\u5728\u306e\u5468\u6ce2\u6570\u3092\u53d6\u5f97\r\ndef inq_freq():\r\n    uart.write(b\"ZZFA;\")\r\n    time.sleep_ms(send_wait)\r\n\r\ndef set_freq():\r\n    w = \"0000\"+str(freq)\r\n    com = w[-11:]+\";\"\r\n    uart.write(b\"ZZFA\"+com)\r\n    time.sleep_ms(send_wait)\r\n       \r\n# \u9001\u4fe1\u30e2\u30fc\u30c9\u3078\r\ndef tx_on():\r\n   uart.write(b\"ZZTX1;\")\r\n   \r\n# \u53d7\u4fe1\u30e2\u30fc\u30c9\u3078   \r\ndef tx_off():\r\n   uart.write(b\"ZZTX0;\")\r\n  \r\n# \u5468\u6ce2\u6570\u3001\u5897\u5206\u3092\u8868\u793a\r\ndef oled_disp():\r\n    ff = freq \/ 1000.0\r\n    f = str(ff)+\"0\"\r\n    s = f[0:7]\r\n    ss = \" \"+str(f_step)+\" Hz\"\r\n    l = len(ss)\r\n    sss = ss[l-7:7]\r\n    n = int(rvol\/4)\r\n    v = \"-\"*n + \"         \"\r\n    v = v[0:14]\r\n    oled.drawText(s, 0, 0, 24, 0)   \r\n    oled.drawText(\"KHz\", 91, 4, 12, 0)\r\n    oled.drawText(sss, 72, 23, 11, 0) \r\n    oled.drawText(v, 0, 24, 11, 0)\r\n\r\n# uart \u53d7\u4fe1\u5272\u308a\u8fbc\u307f\u30cf\u30f3\u30c9\u30e9\u30fc\r\n# thetis\u306b\u5bfe\u3059\u308b\u5468\u6ce2\u6570\u3001\u97f3\u91cf\u554f\u3044\u5408\u308f\u305b\u306e\u5fdc\u7b54\u3092\u5f97\u3066\r\n# freq, rvol\u306b\u5024\u3092\u8a2d\u5b9a\u3059\u308b\r\ndef uart_recv(uart):\r\n    global freq, rvol\r\n    buf = uart.read()\r\n    if len(buf) == 16:\r\n        freq = int(buf[7:15])\r\n    elif len(buf) == 8:\r\n        rvol = int(buf[4:7])\r\n    else:\r\n        return\r\n\r\n# \u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u3001\u30bf\u30af\u30c8SW\u306e\u521d\u671f\u5024\u3092\u8a18\u61b6\u3002\r\nlast_rotary_value = rotary_encoder.value()\r\nlast_fstep_state = fstep_pin.value()\r\nlast_ptt_state = ptt_pin.value()\r\nlast_volinc_state = volinc_pin.value()\r\nlast_voldec_state = voldec_pin.value()\r\n\r\n# \u521d\u671f\u5024\u306e\u8a2d\u5b9a\r\nf_stepa = [100, 500, 1000, 2500, 5000]\r\nf_stepi = 1\r\nfreq = 710_000_0\r\nbfreq = 710_000_0\r\nf_step = 500\r\nupdate = 0\r\nrvol = 10\r\ntx = 0\r\nn = 0\r\n\r\n# oled\u306e\u521d\u671f\u8a2d\u5b9a\r\noled.contrast(255)\r\noled.invert(False)\r\n\r\n# thetis\u306e\u5b9f\u884c\u3092\u5f85\u3064\u3001 PTT\u3092\u62bc\u3059\u3068\u6b21\u3078\u9032\u3080\r\nwhile ptt_pin.value() != 0:\r\n    oled.drawText(\"Conecting\", 0, 0, 24, 50) \r\n    time.sleep_ms(10)\r\n    oled.fill(0)\r\n    \r\n#    oled.drawText(\"         \", 0, 0, 24, 50)\r\n    \r\noled.fill(0)\r\n\r\n#\u3000UART\u306e\u521d\u671f\u5316\r\nuart = UART(0, baudrate=19200, tx=Pin(0), rx=Pin(1),\r\n               flow = UART.RTS|UART.CTS)\r\n\r\n# UART\u306e\u5272\u308a\u8fbc\u307f\u30cf\u30f3\u30c9\u30e9\u767b\u9332\r\nuart.irq(handler=uart_recv, trigger=UART.IRQ_RXIDLE)\r\ntime.sleep_ms(10)\r\n\r\n# \u5468\u6ce2\u6570\u3001\u97f3\u91cf\u306e\u73fe\u5728\u5024\u3092\u5f97\u308b\r\ninq_vol()\r\ninq_freq()\r\noled_disp()\r\n\r\n# \u4ee5\u4e0b\u6c38\u4e45\u30eb\u30fc\u30d7\u3067\u51e6\u7406\u3092\u884c\u3046\r\n\r\nwhile True:\r\n\r\n# \u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u3001\u62bc\u3057\u30dc\u30bf\u30f3SW\u306e\u73fe\u5728\u306e\u5024\u3092\u8aad\u3080\r\n    current_rotary_value = rotary_encoder.value()\r\n    current_ptt_state = ptt_pin.value()\r\n    current_fstep_state = fstep_pin.value()\r\n    current_volinc_state = volinc_pin.value()\r\n    current_voldec_state = voldec_pin.value()    \r\n    update = 0\r\n    \r\n# \u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u3001\u62bc\u3057\u30dc\u30bf\u30f3SW\u306e\u72b6\u614b\u5909\u5316\u306b\u3088\u308a\u51e6\u7406\u3092\u884c\u3046\r\n\r\n# PTT\u3000SW\u306e\u5909\u5316\r\n    if last_ptt_state and not current_ptt_state:\r\n        if tx == 0:\r\n            tx_on()\r\n            tx = 1\r\n            tx_led.value(1)\r\n            next\r\n        else:\r\n            tx_off()\r\n            tx = 0\r\n            tx_led.value(0)\r\n            next\r\n            \r\n# \u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u306e\u5909\u5316    \r\n    if last_rotary_value < current_rotary_value:\r\n        inq_freq()\r\n        freq += f_step\r\n        set_freq()\r\n        oled_disp()\r\n        update = 1\r\n        next\r\n    else:\r\n        if last_rotary_value > current_rotary_value:\r\n            inq_freq()\r\n            freq -= f_step\r\n            set_freq()\r\n            oled_disp()\r\n            update = 1\r\n            next\r\n            \r\n# \u30ed\u30fc\u30bf\u30ea\u30a8\u30f3\u30b3\u30fc\u30c0\u306e\u62bc\u3057\u30dc\u30bf\u30f3SW\r\n    if last_fstep_state and not current_fstep_state:\r\n        f_stepi += 1\r\n        f_stepi = f_stepi % 5\r\n        f_step = f_stepa[f_stepi]\r\n        update = 1\r\n        next\r\n\r\n# \u97f3\u91cf\u30dc\u30bf\u30f3SW\r\n    if last_volinc_state and not current_volinc_state:\r\n        rvol += 8\r\n        update = 1\r\n        if rvol > 100:\r\n            rvol = 100\r\n        set_vol()\r\n        next\r\n\r\n    if last_voldec_state and not current_voldec_state:\r\n        rvol -= 8\r\n        update = 1\r\n        if rvol < 0:\r\n            rvol = 0\r\n        set_vol()\r\n        next\r\n\r\n# 100\u56de\u306b1\u56dethetis\u3068\u540c\u671f\r\n    if (n % 100) == 0:\r\n        inq_freq()\r\n        inq_vol()\r\n        oled_disp()\r\n    \r\n    n += 1    \r\n    bvol = rvol\r\n    bfreq = freq\r\n    last_rotary_value = current_rotary_value\r\n    last_fstep_state = current_fstep_state\r\n    last_ptt_state = current_ptt_state\r\n    last_volinc_state = current_volinc_state\r\n    last_voldec_state = current_voldec_state\r\n    time.sleep_ms(send_wait) \r\n\r\n    \r\n\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5f53\u5c40\u306e\u30e1\u30a4\u30f3\u7121\u7dda\u6a5f\u306fredpitaya\u30dc\u30fc\u30c9\u3068SDR\u30bd\u30d5\u30c8thetis\u3092\u7d44\u307f\u5408\u308f &hellip; <a href=\"https:\/\/hiuchi.mydns.jp\/wordpress\/?page_id=2255\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2255","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/2255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2255"}],"version-history":[{"count":16,"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/2255\/revisions"}],"predecessor-version":[{"id":2276,"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/2255\/revisions\/2276"}],"wp:attachment":[{"href":"https:\/\/hiuchi.mydns.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}