ORANGE pico シリーズ機種一覧 (機種名をクリックすると詳細を表示します。)
ORANGE pico type A   標準機種    ORANGE picoはプログラミングを学ぶためのコンピューターです。
電源を入れればBASICが起動して、
すぐにプログラミングを始めることができます。
          
ORANGE pico type C  組込み用
ORANGE pico type D デュアルCPU搭載フラグシップ
ORANGE pico type E 組込み用
ORANGE pico type S  廉価版
ORANGE pico USB I/O UNIT USBメモリー、USBキーボード拡張キット 
Orangino  Arduinoフォームファクター
 Orangino USB I/O UNIT  Orangino用
USBメモリー、USBキーボード拡張キット 
ORANGE pico シリーズ 販売店
マルツ
千石電商
スイッチサイエンス
共立電子
aitendo
オレンジピコ公式ショップ
再販向けなどの卸取引、
学校などの教育向け一括購入等は
こちらにお問い合わせください。 
ソコン
ORANGE BASIC 最新ファーム  ORANGE BASICの最新ファームはVer 1.02です。

ファームを更新すると、デフォルトのスクリーンエディットモードになってしまいます。そのため、type Cやtype Eなどの標準でビデオ出力のない機種ではシリアルコンソールに何も出力されません。これを解決するには、電源ON後、5秒以上経過してからシリアルコンソールからconfig 3, 0{Enter]と入力してください。文字のエコーはありませんが、システムが再起動され、ラインエディットモードになります。

ORANGE pico type DのサブシステムやUSB I/O UNIT用のファームはこちらです。
ORANGE BASIC コマンド一覧 ORANGE BASICのコマンド一覧はこちらです。
ORANGE BASIC MML仕様 ORANGE BASICのplay文で使用できるMMLの仕様はこちらです。 
ORANGE pico ファーム更新方法 ファーム更新方法はこちらにあります。
ORANGE pico ピン割当てマップ ORAGE pico シリーズのピン割当てマップはこちらです。
ORANGE pico キャラクター一覧 ORANGE picoで用意しているシステムキャラクター一覧はこちらです。
よくある質問 よくある質問はこちらです。
ビデオ出力    家庭用テレビや車載用の液晶モニターに接続することができます。
ぶれない、にじまない、ちらつかない」を目指しました。
キーボード入力中も画面が乱れたりしないので、快適に使用できます。
高速インタプリター     32ビットCPU(48MHz)で動作するインタプリターです。
1万回のループを約1秒で実行します。

昔の8ビットパソコンMZ-2000で同様のベンチマーク結果が26秒だそうです。
  左の写真は、以下のプログラムを実行し、オシロスコープでキャプチャーした画像です。

10 out 1,1
20 out 1,0
30 goto 10
テキスト画面
グラフィックス画面
スプライト機能
  テキスト画面(40文字×25行)とは別にグラフィック画面(320×200ピクセル)を持ち、
さらに16個のスプライトを重ね合わせて同時表示しています。


100 cls
110 locate 10, 10: print "TEXT"
120 circle 100, 100, 60, 1
130 while 1
140 for i = 1 to 16
150 x = rnd(300)
160 y = rnd(180)
170 pattern = 1000 + rnd(134)
180 sprite i, x, y, pattern, rnd(3)
190 next i
200 wend

タートルグラフィックス   プログラミング入門用にタートルグラフィックスをサポートしています。

 教育に適したBASIC    ORANGE BASICはTiny BASICではありません。
長い変数名、多次元配列、文字列、実数演算、数多くの関数をサポートしています。
 
★合計値
100 dim a(5) = [1, 3, 10, 2, 8]
110 sum = 0
120 for i = 0 to 4
130 sum = sum + a(i)
140 next
150 print "sum="; sum

★平均値
100 dim a(5) = [1, 3, 10, 2, 8]
110 sum! = 0
120 for i = 0 to 4
130 sum! = sum! + a(i)
140 next
150 average! = sum! / 5
160 print "average="; average!

★最大値
100 dim a(5) = [1, 3, 10, 2, 8]
110 max = a(0)
120 for i = 0 to 4
130 if max < a(i) then max = a(i)
140 next
150 print "max="; max

★データの交換
100 a = 10
110 b = 20
120 t = a
130 a = b
140 b = t
150 print "a="; a; ", b="; b

 
★リニアサーチ
100 dim a(5) = [10, 3, 1, 4, 2]
110 searchValue = 4
120 findID = -1
130 for i = 0 to 4
140 if a(i) = searchValue then findID = i: break for
150 next
160 print "findID="; findID

★バイナリーサーチ
100 dim a(5) = [1, 2, 4, 5, 10]
110 searchValue = 4
120 findID = -1
130 left = 0
140 right = 4
150 while left <= right
160 middle = (left + right) / 2
170 if a(middle) = searchValue then findID = middle: break while
180 if a(middle) < searchValue then left = middle + 1 else right = middle - 1
190 wend
200 print "findID="; findID
 (オプション)カラーグラフィックス   オプションのTFT液晶を接続すると、320×240ピクセルのカラー表示も可能です。
 (オプション)ゲームコントローラー  
ゲームコントローラーの接続にはWiiChukアダプターが必要です。まず、ゲームコントローラーにWiiChukアダプターを下図のような向きで装着します。
次にWiiChukアダプターとOrange picoを下記のようにジャンパー線で接続します。(ORANGE pico側はピン割り当てマップを参照)
WiiChuk  ORANGE pico 
 - GND(CPIUの8番ピンなど)
 + VSS(CPIUの13番ピンなど)
 d SDA2(CPUの6番ピン)
 c SCL2(CPUの7番ピン)
 キャラクターを動かすサンプル(ORANGE BASIC Ver 0.91以上が必要)
100 BUTTON_UP = 1
110 BUTTON_DOWN = 2
120 BUTTON_LEFT = 4
130 BUTTON_RIGHT = 8
140 BUTTON_A = 16
150 BUTTON_B = 32
160 BUTTON_START = 1024
170 BUTTON_SELECT = 2048
180 X_MIN = 0
190 X_MAX = 39
200 Y_MIN = 0
210 Y_MAX = 23
220 cpoke 38, 59
230 cls
240 button(-1)
250 start@
260 locate x, y
270 pX = x
280 pY = y
290 print "&";
300 status = button(0)
310 if status = -1 then print "ERROR": goto end@
320 if status & BUTTON_SELECT then goto end@
330 if status & BUTTON_RIGHT then x = x + 1
340 if status & BUTTON_LEFT then x = x - 1
350 if status & BUTTON_DOWN then y = y + 1
360 if status & BUTTON_UP then y = y - 1
370 if x < X_MIN then x = X_MIN
380 if X_MAX < x then x = X_MAX
390 if y < Y_MIN then y = Y_MIN
400 if Y_MAX < y then y = Y_MAX
410 locate pX, pY
420 print " ";
430 goto start@
440 end@
450 cpoke
ゲームコントローラーを使ったサンプルゲームです。(ORANGE BASIC Ver 0.91以上が必要)

・ゲームコントローラー必須
・十文字キーで自機移動
・Aボタンでビーム発射(UFOより下にいるときのみ有効)、UFOにヒットすれば+10
・Bボタンで爆弾投下(UFOより上にいるときのみ有効)、UFOにヒットすれば+100
・UFOと衝突、またはUFOが一番下まで侵入するとゲームオーバー


 UFO GAME
1000 ' -- UFO GAME --
1010 BUTTON_UP = 1
1020 BUTTON_DOWN = 2
1030 BUTTON_LEFT = 4
1040 BUTTON_RIGHT = 8
1050 BUTTON_A = 16
1060 BUTTON_B = 32
1070 BUTTON_START = 1024
1080 BUTTON_SELECT = 2048
1090 X_MIN = 0
1100 X_MAX = 39
1110 Y_MIN = 1
1120 Y_MAX = 23
1130 PLAYER = 241
1140 UFO = 242
1150 BEAM = 243
1160 EXPLOSION = 244
1170 BOMB = 245
1180 cpoke PLAYER, 31
1190 cpoke UFO, 6
1200 cpoke BEAM, 93
1210 cpoke EXPLOSION, 23
1220 cpoke BOMB, 29
1230 cls
1240 button(-1)
1250 x = 19: y = 23
1260 ' --------------------
1270 start@
1280 locate 0, 0: print "SCORE ";: print score
1290 status = button(0)
1300 gosub movePlayer@
1310 gosub moveUFO@
1320 if status & BUTTON_A then gosub beam@
1330 if status & BUTTON_B then gosub bomb@
1340 if yUFO = Y_MAX then goto finish@
1350 if x = xUFO and y = yUFO then goto finish@
1360 pause 50
1370 goto start@
1380 ' --------------------
1390 finish@
1400 beep 10, 1000
1410 locate xUFO, yUFO: print chr$(EXPLOSION);
1420 beep 30, 1000
1430 ' --------------------
1440 end@
1450 print: print "GAME OVER - SCORE ";: print score
1460 cpoke: end
1470 ' --------------------
1480 beam@
1490 if y <= yUFO then return
1500 xBeam = x
1510 for yBeam = y - 1 to yUFO step -1
1520 locate xBeam, yBeam: print chr$(BEAM);
1530 pause 10
1540 locate xBeam, yBeam: print " ";
1550 next
1560 if xBeam <> xUFO then return
1570 beep 10, 100
1580 locate xUFO, yUFO: print chr$(EXPLOSION);
1590 score = score + 10
1600 pause 1000: beep 30, 100
1610 locate xUFO, yUFO: print " ";
1620 xUFO = rnd(X_MAX + 1)
1630 return
1640 ' --------------------
1650 movePlayer@
1660 locate x, y: print " ";
1670 if status & BUTTON_RIGHT and x < X_MAX then x = x + 1
1680 if status & BUTTON_LEFT and X_MIN < x then x = x - 1
1690 if status & BUTTON_DOWN and y < Y_MAX then y = y + 1
1700 if status & BUTTON_UP and Y_MIN < y then y = y - 1
1710 locate x, y: print chr$(PLAYER);
1720 return
1730 ' --------------------
1740 moveUFO@
1750 locate xUFO, yUFO: print " ";
1760 xUFO = xUFO + rnd(5) - 2
1770 if xUFO < X_MIN then xUFO = X_MIN
1780 if X_MAX < xUFO then xUFO = X_MAX
1790 yUFO = yUFO + rnd(5) - 2
1800 if yUFO < Y_MIN then yUFO = Y_MIN
1810 if Y_MAX < yUFO then yUFO = Y_MAX
1820 locate xUFO, yUFO: print chr$(UFO);
1830 return
1840 ' --------------------
1850 bomb@
1860 if yUFO <= y then return
1870 xBomb = x
1880 for yBomb = y + 1 to yUFO
1890 locate xBomb, yBomb: print chr$(BOMB);
1900 pause 20
1910 locate xBomb, yBomb: print " ";
1920 next
1930 if xBomb <> xUFO then return
1940 beep 10, 100
1950 locate xUFO, yUFO: print chr$(EXPLOSION);
1960 score = score + 100
1970 pause 1000: beep 30, 100
1980 locate xUFO, yUFO: print " ";
1990 return
 (オプション)サーマルプリンター   ナダ電子製AS-289R2プリンタシールドに対応しています。
シリアル接続で、最大2台まで接続できます。

プリンターとは2本の線で接続するだけです。
ORANGE BASICが起動したら、LPT 1と入力するだけで
BASICからあの懐かしいLPRINT、LLIST、COPYが使えるようになります。

LPTコマンドの最初のパラメーターはシリアル通信のチャネル番号、
2番目のパラメーターがボーレートです。
ボーレートは省略すると9600になります。
38400を指定することもできます。

lprintの文字列パラメーターにformat$関数(C言語のprintf書式相当)を使用すると、
アプリ作成も容易です。
また、文字列に\x??形式の16進数を含めることができますので、
バイナリー送信が可能でバーコードやQRコードの印字も可能です。

 
100 lpt 2
110 cls
120 locate 0, 20: print "TEST"
130 copy 1
140 circle 100, 100, 50, &hffff
150 copy 2
160 lprint format$("[%020d]", 123456789)
170 lprint format$("[%20x]", 100)
180 lprint format$("[%20s]", "This is a story.")
190 lprint "\x1d\x78\x4c\x04\x54\x45\x53\x54\x0d\x0d"
200 lprint "\x1d\x6b20123456789012\x00"
210 llist
220 for i = 1 to 10
230 lprint
240 next

動作確認済みキーボード(黒字は当社で確認済み、赤字はユーザー様からのご報告によるものです。)
 FILCO  FKBN91M/NFB2
 aitendo  MI-UKB-B
 ELECOM  TK-FCM077Pシリーズ
 ELECOM  TK-FCM006シリーズ
 ELECOM  TK-UP87MPシリーズ
 ELECOM  TK-FCM005シリーズ
 ELECOM  TK-P89MPシリーズ
 ELECOM  TK-UP01MAシリーズ
 ELECOM  TK-FCM007シリーズ
 ELECOM  TK-U12FYAシリーズ
 SANWA SUPPLY  SKB-SL10シリーズ
 BUFFALO  BSKBU02シリーズ
 BUFFALO  BSKBC02BK
 AOTECH  AOK-89UPシリーズ
 EzKEY  IKE-101W/B
 Logicool  Y-BP62A
 

 
ORANGE pico Series Personal Computer
 
機種  特徴 価格   基板サイズ  回路図 部品表/組立手順   ピン配置
 ORANGE pico type A
ORANGE pico Seriesの標準機種です。

超入門書「初めてのオレンジベーシック」は
ORANGE pico type Aを教材として使用しています。

BASICや電子工作の学習におすすめです。
教育用にご活用ください。
組立キット1,750円(税別)、
税込み1,890円
オレンジピコショップで販売中

完成品2,650円(税別)、
税込み2,862円
オレンジピコショップで販売中
95×72mm  回路図  部品表/組立手順  ピン配置
 ORANGE pico type C

ORANGE pico type Cはtype Eからレギュレーターを省略し、さらに小型化し、
価格も1,000円を実現しました。
運用時は3.3Vが必要です。

小さくてもソフトはtype Aと共通ですので、抵抗とコネクタ類を追加すれば、
テレビやキーボードも接続可能です。

BASICでPIC32を制御しよう!
組立キット926円(税別)、
税込み1,000円
オレンジピコショップで販売中
 
50×40mm  回路図  部品表/組立手順  ピン配置
ORANGE pico Video Shield
 
ORANGE pico type C専用ビデオシールドです。
組立キット926円(税別)、
税込み1,000円
オレンジピコショップで販売中
50×40mm   回路図   部品表/組立手順  
 ORANGE pico type E

ORANGE pico type Eは組込用にtype Sから
ビデオ出力とキーボード接続を省略しました。

開発時は、PCとシリアルケーブルで接続し、
運用時は5V電源のみを供給することを想定しています。

また、運用時もオプションのTFTカラー液晶モジュールを接続することで
画面出力可能となります。

2.2インチTFT液晶モジュールとぴったり重ね合わせることができます。
(4隅のホール位置、JP3の位置が合うようになっています。)
 
組立キット1,280円(税別)、
税込み1,382円
オレンジピコショップで販売中
69×42mm  回路図  部品表/組立手順  ピン配置
 ORANGE pico type S

ORANGE pico type Sはtype AからPS/2キーボード端子、
サウンド出力端子、microUSB電源端子を省略しさらに低価格を実現しました。

キーボードは上記の動作確認済みのものをUSB端子に接続することができます。
(専用アダプター使用でPS/2専用キーボードも使用できます。)

BASICの学習におすすめです。
低価格なので講習会等にご活用ください。
 
組立キット1,380円(税別)、
税込み1,490円
オレンジピコショップで販売中
 
72×47mm  回路図  部品表/組立手順  ピン配置