├── .gitattributes ├── .gitignore ├── 01-HelloWorld ├── QEMU │ ├── HelloWorld.ex-meta │ ├── HelloWorld.lpi │ ├── HelloWorld.lpr │ └── README.txt ├── RPi │ ├── HelloWorld.ex-meta │ ├── HelloWorld.lpi │ ├── HelloWorld.lpr │ └── README.txt ├── RPi2 │ ├── HelloWorld.ex-meta │ ├── HelloWorld.lpi │ ├── HelloWorld.lpr │ └── README.txt ├── RPi3 │ ├── HelloWorld.ex-meta │ ├── HelloWorld.lpi │ ├── HelloWorld.lpr │ └── README.txt └── RPi4 │ ├── HelloWorld.ex-meta │ ├── HelloWorld.lpi │ ├── HelloWorld.lpr │ └── README.txt ├── 02-Blinker ├── RPi │ ├── Blinker.ex-meta │ ├── Blinker.lpi │ ├── Blinker.lpr │ └── README.txt ├── RPi2 │ ├── Blinker.ex-meta │ ├── Blinker.lpi │ ├── Blinker.lpr │ └── README.txt ├── RPi3 │ ├── Blinker.ex-meta │ ├── Blinker.lpi │ ├── Blinker.lpr │ └── README.txt └── RPi4 │ ├── Blinker.ex-meta │ ├── Blinker.lpi │ ├── Blinker.lpr │ └── README.txt ├── 03-ScreenOutput ├── QEMU │ ├── README.txt │ ├── ScreenOutput.ex-meta │ ├── ScreenOutput.lpi │ └── ScreenOutput.lpr ├── RPi │ ├── README.txt │ ├── ScreenOutput.ex-meta │ ├── ScreenOutput.lpi │ └── ScreenOutput.lpr ├── RPi2 │ ├── README.txt │ ├── ScreenOutput.ex-meta │ ├── ScreenOutput.lpi │ └── ScreenOutput.lpr ├── RPi3 │ ├── README.txt │ ├── ScreenOutput.ex-meta │ ├── ScreenOutput.lpi │ └── ScreenOutput.lpr └── RPi4 │ ├── README.txt │ ├── ScreenOutput.ex-meta │ ├── ScreenOutput.lpi │ └── ScreenOutput.lpr ├── 04-KeyboardInput ├── QEMU │ ├── KeyboardInput.ex-meta │ ├── KeyboardInput.lpi │ ├── KeyboardInput.lpr │ └── README.txt ├── RPi │ ├── KeyboardInput.ex-meta │ ├── KeyboardInput.lpi │ ├── KeyboardInput.lpr │ └── README.txt ├── RPi2 │ ├── KeyboardInput.ex-meta │ ├── KeyboardInput.lpi │ ├── KeyboardInput.lpr │ └── README.txt ├── RPi3 │ ├── KeyboardInput.ex-meta │ ├── KeyboardInput.lpi │ ├── KeyboardInput.lpr │ └── README.txt └── RPi4 │ ├── KeyboardInput.ex-meta │ ├── KeyboardInput.lpi │ ├── KeyboardInput.lpr │ └── README.txt ├── 05-TimeDate ├── QEMU │ ├── README.txt │ ├── TimeDate.ex-meta │ ├── TimeDate.lpi │ └── TimeDate.lpr ├── RPi │ ├── README.txt │ ├── TimeDate.ex-meta │ ├── TimeDate.lpi │ └── TimeDate.lpr ├── RPi2 │ ├── README.txt │ ├── TimeDate.ex-meta │ ├── TimeDate.lpi │ └── TimeDate.lpr ├── RPi3 │ ├── README.txt │ ├── TimeDate.ex-meta │ ├── TimeDate.lpi │ └── TimeDate.lpr └── RPi4 │ ├── README.txt │ ├── TimeDate.ex-meta │ ├── TimeDate.lpi │ └── TimeDate.lpr ├── 06-PascalObjects ├── QEMU │ ├── PascalObjects.ex-meta │ ├── PascalObjects.lpi │ ├── PascalObjects.lpr │ └── README.txt ├── RPi │ ├── PascalObjects.ex-meta │ ├── PascalObjects.lpi │ ├── PascalObjects.lpr │ └── README.txt ├── RPi2 │ ├── PascalObjects.ex-meta │ ├── PascalObjects.lpi │ ├── PascalObjects.lpr │ └── README.txt ├── RPi3 │ ├── PascalObjects.ex-meta │ ├── PascalObjects.lpi │ ├── PascalObjects.lpr │ └── README.txt └── RPi4 │ ├── PascalObjects.ex-meta │ ├── PascalObjects.lpi │ ├── PascalObjects.lpr │ └── README.txt ├── 07-Exceptions ├── QEMU │ ├── Exceptions.ex-meta │ ├── Exceptions.lpi │ ├── Exceptions.lpr │ └── README.txt ├── RPi │ ├── Exceptions.ex-meta │ ├── Exceptions.lpi │ ├── Exceptions.lpr │ └── README.txt ├── RPi2 │ ├── Exceptions.ex-meta │ ├── Exceptions.lpi │ ├── Exceptions.lpr │ └── README.txt ├── RPi3 │ ├── Exceptions.ex-meta │ ├── Exceptions.lpi │ ├── Exceptions.lpr │ └── README.txt └── RPi4 │ ├── Exceptions.ex-meta │ ├── Exceptions.lpi │ ├── Exceptions.lpr │ └── README.txt ├── 08-FileHandling ├── QEMU │ ├── FileHandling.ex-meta │ ├── FileHandling.lpi │ ├── FileHandling.lpr │ ├── QEMULauncher.ini │ ├── README.txt │ └── disk.img ├── RPi │ ├── FileHandling.ex-meta │ ├── FileHandling.lpi │ ├── FileHandling.lpr │ ├── QEMULauncher.ini │ └── README.txt ├── RPi2 │ ├── FileHandling.ex-meta │ ├── FileHandling.lpi │ ├── FileHandling.lpr │ ├── QEMULauncher.ini │ └── README.txt ├── RPi3 │ ├── FileHandling.ex-meta │ ├── FileHandling.lpi │ ├── FileHandling.lpr │ ├── QEMULauncher.ini │ └── README.txt └── RPi4 │ ├── FileHandling.ex-meta │ ├── FileHandling.lpi │ ├── FileHandling.lpr │ └── README.txt ├── 09-LogOutput ├── QEMU │ ├── LogOutput.ex-meta │ ├── LogOutput.lpi │ ├── LogOutput.lpr │ └── README.txt ├── RPi │ ├── LogOutput.ex-meta │ ├── LogOutput.lpi │ ├── LogOutput.lpr │ └── README.txt ├── RPi2 │ ├── LogOutput.ex-meta │ ├── LogOutput.lpi │ ├── LogOutput.lpr │ └── README.txt ├── RPi3 │ ├── LogOutput.ex-meta │ ├── LogOutput.lpi │ ├── LogOutput.lpr │ └── README.txt └── RPi4 │ ├── LogOutput.ex-meta │ ├── LogOutput.lpi │ ├── LogOutput.lpr │ └── README.txt ├── 10-MultiThreading ├── QEMU │ ├── MultiThreading.ex-meta │ ├── MultiThreading.lpi │ ├── MultiThreading.lpr │ ├── README.txt │ ├── Thread1.pas │ └── Thread2.pas ├── RPi │ ├── MultiThreading.ex-meta │ ├── MultiThreading.lpi │ ├── MultiThreading.lpr │ ├── README.txt │ ├── Thread1.pas │ └── Thread2.pas ├── RPi2 │ ├── MultiThreading.ex-meta │ ├── MultiThreading.lpi │ ├── MultiThreading.lpr │ ├── README.txt │ ├── Thread1.pas │ └── Thread2.pas ├── RPi3 │ ├── MultiThreading.ex-meta │ ├── MultiThreading.lpi │ ├── MultiThreading.lpr │ ├── README.txt │ ├── Thread1.pas │ └── Thread2.pas └── RPi4 │ ├── MultiThreading.ex-meta │ ├── MultiThreading.lpi │ ├── MultiThreading.lpr │ ├── README.txt │ ├── Thread1.pas │ └── Thread2.pas ├── 11-MultiCPU ├── RPi2 │ ├── MultiCPU.ex-meta │ ├── MultiCPU.lpi │ ├── MultiCPU.lpr │ └── README.txt ├── RPi3 │ ├── MultiCPU.ex-meta │ ├── MultiCPU.lpi │ ├── MultiCPU.lpr │ └── README.txt └── RPi4 │ ├── MultiCPU.ex-meta │ ├── MultiCPU.lpi │ ├── MultiCPU.lpr │ └── README.txt ├── 12-WebServer ├── QEMU │ ├── QEMULauncher.ini │ ├── README.txt │ ├── WebServer.ex-meta │ ├── WebServer.lpi │ ├── WebServer.lpr │ └── disk.img ├── RPi │ ├── QEMULauncher.ini │ ├── README.txt │ ├── WebServer.ex-meta │ ├── WebServer.lpi │ └── WebServer.lpr ├── RPi2 │ ├── QEMULauncher.ini │ ├── README.txt │ ├── WebServer.ex-meta │ ├── WebServer.lpi │ └── WebServer.lpr ├── RPi3 │ ├── QEMULauncher.ini │ ├── README.txt │ ├── WebServer.ex-meta │ ├── WebServer.lpi │ └── WebServer.lpr └── RPi4 │ ├── README.txt │ ├── WebServer.ex-meta │ ├── WebServer.lpi │ └── WebServer.lpr ├── 13-SerialConnection ├── QEMU │ ├── README.txt │ ├── SerialConnection.ex-meta │ ├── SerialConnection.lpi │ └── SerialConnection.lpr ├── RPi │ ├── README.txt │ ├── SerialConnection.ex-meta │ ├── SerialConnection.lpi │ └── SerialConnection.lpr ├── RPi2 │ ├── README.txt │ ├── SerialConnection.ex-meta │ ├── SerialConnection.lpi │ └── SerialConnection.lpr ├── RPi3 │ ├── README.txt │ ├── SerialConnection.ex-meta │ ├── SerialConnection.lpi │ └── SerialConnection.lpr └── RPi4 │ ├── README.txt │ ├── SerialConnection.ex-meta │ ├── SerialConnection.lpi │ └── SerialConnection.lpr ├── 14-GPIOHandling ├── RPi │ ├── GPIOHandling.ex-meta │ ├── GPIOHandling.lpi │ ├── GPIOHandling.lpr │ └── README.txt ├── RPi2 │ ├── GPIOHandling.ex-meta │ ├── GPIOHandling.lpi │ ├── GPIOHandling.lpr │ └── README.txt ├── RPi3 │ ├── GPIOHandling.ex-meta │ ├── GPIOHandling.lpi │ ├── GPIOHandling.lpr │ └── README.txt └── RPi4 │ ├── GPIOHandling.ex-meta │ ├── GPIOHandling.lpi │ ├── GPIOHandling.lpr │ └── README.txt ├── 15-MouseCursor ├── QEMU │ ├── MouseCursor.ex-meta │ ├── MouseCursor.lpi │ ├── MouseCursor.lpr │ └── README.txt ├── RPi │ ├── MouseCursor.ex-meta │ ├── MouseCursor.lpi │ ├── MouseCursor.lpr │ └── README.txt ├── RPi2 │ ├── MouseCursor.ex-meta │ ├── MouseCursor.lpi │ ├── MouseCursor.lpr │ └── README.txt ├── RPi3 │ ├── MouseCursor.ex-meta │ ├── MouseCursor.lpi │ ├── MouseCursor.lpr │ └── README.txt └── RPi4 │ ├── MouseCursor.ex-meta │ ├── MouseCursor.lpi │ ├── MouseCursor.lpr │ └── README.txt ├── 16-BouncingBoxes ├── RPi │ ├── BouncingBoxes.ex-meta │ ├── BouncingBoxes.lpi │ ├── BouncingBoxes.lpr │ └── README.txt ├── RPi2 │ ├── BouncingBoxes.ex-meta │ ├── BouncingBoxes.lpi │ ├── BouncingBoxes.lpr │ └── README.txt ├── RPi3 │ ├── BouncingBoxes.ex-meta │ ├── BouncingBoxes.lpi │ ├── BouncingBoxes.lpr │ └── README.txt └── RPi4 │ ├── BouncingBoxes.ex-meta │ ├── BouncingBoxes.lpi │ ├── BouncingBoxes.lpr │ └── README.txt ├── 17-TextEditor ├── QEMU │ ├── QEMULauncher.ini │ ├── README.txt │ ├── TextEditor.ex-meta │ ├── TextEditor.lpi │ ├── TextEditor.lpr │ └── disk.img ├── RPi │ ├── QEMULauncher.ini │ ├── README.txt │ ├── TextEditor.ex-meta │ ├── TextEditor.lpi │ └── TextEditor.lpr ├── RPi2 │ ├── QEMULauncher.ini │ ├── README.txt │ ├── TextEditor.ex-meta │ ├── TextEditor.lpi │ └── TextEditor.lpr ├── RPi3 │ ├── QEMULauncher.ini │ ├── README.txt │ ├── TextEditor.ex-meta │ ├── TextEditor.lpi │ └── TextEditor.lpr └── RPi4 │ ├── README.txt │ ├── TextEditor.ex-meta │ ├── TextEditor.lpi │ └── TextEditor.lpr ├── 18-PWMControl ├── RPi │ ├── PWM Example.png │ ├── PWMControl.ex-meta │ ├── PWMControl.lpi │ ├── PWMControl.lpr │ └── README.txt ├── RPi2 │ ├── PWM Example.png │ ├── PWMControl.ex-meta │ ├── PWMControl.lpi │ ├── PWMControl.lpr │ └── README.txt ├── RPi3 │ ├── PWM Example.png │ ├── PWMControl.ex-meta │ ├── PWMControl.lpi │ ├── PWMControl.lpr │ └── README.txt └── RPi4 │ ├── PWM Example.png │ ├── PWMControl.ex-meta │ ├── PWMControl.lpi │ ├── PWMControl.lpr │ └── README.txt ├── 19-SenseHAT ├── RPi │ ├── README.txt │ ├── SenseHAT.ex-meta │ ├── SenseHAT.lpi │ └── SenseHAT.lpr ├── RPi2 │ ├── README.txt │ ├── SenseHAT.ex-meta │ ├── SenseHAT.lpi │ └── SenseHAT.lpr ├── RPi3 │ ├── README.txt │ ├── SenseHAT.ex-meta │ ├── SenseHAT.lpi │ └── SenseHAT.lpr └── RPi4 │ ├── README.txt │ ├── SenseHAT.ex-meta │ ├── SenseHAT.lpi │ └── SenseHAT.lpr ├── 20-PWMSound ├── RPi │ ├── PWMSound.ex-meta │ ├── PWMSound.lpi │ ├── PWMSound.lpr │ └── README.txt ├── RPi2 │ ├── PWMSound.ex-meta │ ├── PWMSound.lpi │ ├── PWMSound.lpr │ └── README.txt ├── RPi3 │ ├── PWMSound.ex-meta │ ├── PWMSound.lpi │ ├── PWMSound.lpr │ └── README.txt ├── RPi4 │ ├── PWMSound.ex-meta │ ├── PWMSound.lpi │ ├── PWMSound.lpr │ └── README.txt └── a2002011001-e02.pcm ├── 21-JoystickGamepad ├── RPi │ ├── JoystickGamepad.ex-meta │ ├── JoystickGamepad.lpi │ ├── JoystickGamepad.lpr │ └── README.txt ├── RPi3 │ ├── JoystickGamepad.ex-meta │ ├── JoystickGamepad.lpi │ ├── JoystickGamepad.lpr │ └── README.txt └── RPi4 │ ├── JoystickGamepad.ex-meta │ ├── JoystickGamepad.lpi │ ├── JoystickGamepad.lpr │ └── README.txt ├── Advanced ├── DedicatedCPU │ ├── RPi2 │ │ ├── DedicatedCPU.ex-meta │ │ ├── DedicatedCPU.lpi │ │ ├── DedicatedCPU.lpr │ │ ├── InitUnit.pas │ │ ├── README.txt │ │ └── ThreadUnit.pas │ └── RPi4 │ │ ├── DedicatedCPU.ex-meta │ │ ├── DedicatedCPU.lpi │ │ ├── DedicatedCPU.lpr │ │ ├── InitUnit.pas │ │ ├── README.txt │ │ └── ThreadUnit.pas ├── GPUMouse │ ├── RPi2 │ │ ├── GPUMouse.ex-meta │ │ ├── GPUMouse.lpi │ │ ├── GPUMouse.lpr │ │ └── README.txt │ └── RPi4 │ │ ├── GPUMouse.ex-meta │ │ ├── GPUMouse.lpi │ │ ├── GPUMouse.lpr │ │ └── README.txt ├── PWMPCM │ ├── RPi3 │ │ ├── PWMPCM.ex-meta │ │ ├── PWMPCM.lpi │ │ ├── PWMPCM.lpr │ │ ├── README.txt │ │ └── a2002011001-e02-8kHz.pcm │ └── RPi4 │ │ ├── PWMPCM.ex-meta │ │ ├── PWMPCM.lpi │ │ ├── PWMPCM.lpr │ │ ├── README.txt │ │ └── a2002011001-e02-8kHz.pcm ├── RAMDisk │ ├── RPi2 │ │ ├── RAMDisk.ex-meta │ │ ├── RAMDisk.lpi │ │ ├── RAMDisk.lpr │ │ └── README.txt │ └── RPi4 │ │ ├── RAMDisk.ex-meta │ │ ├── RAMDisk.lpi │ │ ├── RAMDisk.lpr │ │ └── README.txt ├── README.md ├── Sensormatic3000 │ └── RPi2 │ │ ├── Bitstream_Vera_Sans_Mono_25.pas │ │ ├── Bitstream_Vera_Sans_Mono_40.pas │ │ ├── GraphUnit.pas │ │ ├── InitUnit.pas │ │ ├── MainUnit.pas │ │ ├── README.txt │ │ ├── SensorUnit.pas │ │ ├── Sensormatic3000.ex-meta │ │ ├── Sensormatic3000.lpi │ │ ├── Sensormatic3000.lpr │ │ ├── TimeUnit.pas │ │ └── www │ │ ├── Chart.bundle.js │ │ └── jquery.min.js └── UDPServer │ └── RPi2 │ ├── InitUnit.pas │ ├── README.txt │ ├── ServerUnit.pas │ ├── UDPServer.ex-meta │ ├── UDPServer.lpi │ └── UDPServer.lpr ├── Contributed └── MouseDrawing │ └── RPi2 │ ├── MouseDrawing.ex-meta │ ├── MouseDrawing.lpi │ ├── MouseDrawing.lpr │ ├── README.txt │ ├── cursor10.pnm │ ├── linecircle.pas │ ├── meicursor.pas │ └── pm2array.pas ├── README.md ├── Synapse ├── EchoDaemon │ └── RPi2 │ │ ├── EchoDaemon.lpi │ │ ├── EchoDaemon.lpr │ │ └── echo.pas ├── FTPServ │ └── RPi2 │ │ ├── FTPServ.lpi │ │ ├── FTPServ.lpr │ │ ├── ftpmain.pas │ │ └── ftpthrd.pas ├── HTTPProxy │ └── RPi2 │ │ ├── HTTPProxy.lpi │ │ ├── HTTPProxy.lpr │ │ └── ProxyThrd.pas ├── HTTPServ │ └── RPi2 │ │ ├── HTTPServ.lpi │ │ ├── HTTPServ.lpr │ │ └── httpthrd.pas ├── README.md ├── SNMPServ │ └── RPi2 │ │ ├── SNMPServ.lpi │ │ ├── SNMPServ.lpr │ │ └── snmpthrd.pas ├── SNTP │ └── RPi2 │ │ ├── SNTP.lpi │ │ └── SNTP.lpr ├── Scan │ └── RPi2 │ │ ├── IPUtils.pas │ │ ├── PingThread.pas │ │ ├── Scan.lpi │ │ └── Scan.lpr ├── SendMail │ └── RPi2 │ │ ├── SendMail.lpi │ │ ├── SendMail.lpr │ │ └── mailsend.pas ├── SerialEcho │ └── RPi2 │ │ ├── SerialEcho.lpi │ │ └── SerialEcho.lpr └── TFTPServer │ └── RPi2 │ ├── TFTPDaemonThread.pas │ ├── TFTPServer.lpi │ └── TFTPServer.lpr ├── VideoCoreIV ├── HelloPi │ ├── HelloAudio │ │ ├── RPi │ │ │ ├── HelloAudio.ex-meta │ │ │ ├── HelloAudio.lpi │ │ │ ├── HelloAudio.lpr │ │ │ ├── README.txt │ │ │ └── libhello_audio.a │ │ ├── RPi2 │ │ │ ├── HelloAudio.ex-meta │ │ │ ├── HelloAudio.lpi │ │ │ ├── HelloAudio.lpr │ │ │ ├── README.txt │ │ │ └── libhello_audio.a │ │ └── RPi4 │ │ │ ├── HelloAudio.ex-meta │ │ │ ├── HelloAudio.lpi │ │ │ ├── HelloAudio.lpr │ │ │ ├── README.txt │ │ │ └── libhello_audio.a │ ├── HelloDispmanX │ │ ├── RPi │ │ │ ├── HelloDispmanX.ex-meta │ │ │ ├── HelloDispmanX.lpi │ │ │ ├── HelloDispmanX.lpr │ │ │ ├── README.txt │ │ │ └── libhello_dispmanx.a │ │ ├── RPi2 │ │ │ ├── HelloDispmanX.ex-meta │ │ │ ├── HelloDispmanX.lpi │ │ │ ├── HelloDispmanX.lpr │ │ │ ├── README.txt │ │ │ └── libhello_dispmanx.a │ │ └── RPi4 │ │ │ ├── HelloDispmanX.ex-meta │ │ │ ├── HelloDispmanX.lpi │ │ │ ├── HelloDispmanX.lpr │ │ │ ├── README.txt │ │ │ └── libhello_dispmanx.a │ ├── HelloEncode │ │ ├── RPi │ │ │ ├── HelloEncode.ex-meta │ │ │ ├── HelloEncode.lpi │ │ │ ├── HelloEncode.lpr │ │ │ ├── README.txt │ │ │ └── libhello_encode.a │ │ ├── RPi2 │ │ │ ├── HelloEncode.ex-meta │ │ │ ├── HelloEncode.lpi │ │ │ ├── HelloEncode.lpr │ │ │ ├── README.txt │ │ │ └── libhello_encode.a │ │ └── RPi4 │ │ │ ├── HelloEncode.ex-meta │ │ │ ├── HelloEncode.lpi │ │ │ ├── HelloEncode.lpr │ │ │ ├── README.txt │ │ │ └── libhello_encode.a │ ├── HelloJPEG │ │ ├── RPi │ │ │ ├── Beetroot.jpg │ │ │ ├── HelloJPEG.ex-meta │ │ │ ├── HelloJPEG.lpi │ │ │ ├── HelloJPEG.lpr │ │ │ ├── README.txt │ │ │ └── libhello_jpeg.a │ │ └── RPi2 │ │ │ ├── Beetroot.jpg │ │ │ ├── HelloJPEG.ex-meta │ │ │ ├── HelloJPEG.lpi │ │ │ ├── HelloJPEG.lpr │ │ │ ├── README.txt │ │ │ └── libhello_jpeg.a │ ├── HelloMMALEncode │ │ ├── RPi │ │ │ ├── HelloMMALEncode.ex-meta │ │ │ ├── HelloMMALEncode.lpi │ │ │ ├── HelloMMALEncode.lpr │ │ │ ├── README.txt │ │ │ └── libhello_mmal_encode.a │ │ ├── RPi2 │ │ │ ├── HelloMMALEncode.ex-meta │ │ │ ├── HelloMMALEncode.lpi │ │ │ ├── HelloMMALEncode.lpr │ │ │ ├── README.txt │ │ │ └── libhello_mmal_encode.a │ │ └── RPi4 │ │ │ ├── HelloMMALEncode.ex-meta │ │ │ ├── HelloMMALEncode.lpi │ │ │ ├── HelloMMALEncode.lpr │ │ │ ├── README.txt │ │ │ └── libhello_mmal_encode.a │ ├── HelloTeapot │ │ ├── RPi │ │ │ ├── HelloTeapot.ex-meta │ │ │ ├── HelloTeapot.lpi │ │ │ ├── HelloTeapot.lpr │ │ │ ├── README.txt │ │ │ └── libhello_teapot.a │ │ └── RPi2 │ │ │ ├── HelloTeapot.ex-meta │ │ │ ├── HelloTeapot.lpi │ │ │ ├── HelloTeapot.lpr │ │ │ ├── README.txt │ │ │ └── libhello_teapot.a │ ├── HelloTiger │ │ ├── RPi │ │ │ ├── HelloTiger.ex-meta │ │ │ ├── HelloTiger.lpi │ │ │ ├── HelloTiger.lpr │ │ │ ├── README.txt │ │ │ └── libhello_tiger.a │ │ └── RPi2 │ │ │ ├── HelloTiger.ex-meta │ │ │ ├── HelloTiger.lpi │ │ │ ├── HelloTiger.lpr │ │ │ ├── README.txt │ │ │ └── libhello_tiger.a │ ├── HelloTriangle │ │ ├── RPi │ │ │ ├── HelloTriangle.ex-meta │ │ │ ├── HelloTriangle.lpi │ │ │ ├── HelloTriangle.lpr │ │ │ ├── README.txt │ │ │ └── libhello_triangle.a │ │ └── RPi2 │ │ │ ├── HelloTriangle.ex-meta │ │ │ ├── HelloTriangle.lpi │ │ │ ├── HelloTriangle.lpr │ │ │ ├── README.txt │ │ │ └── libhello_triangle.a │ ├── HelloTriangle2 │ │ ├── RPi │ │ │ ├── HelloTriangle2.ex-meta │ │ │ ├── HelloTriangle2.lpi │ │ │ ├── HelloTriangle2.lpr │ │ │ ├── README.txt │ │ │ └── libhello_triangle2.a │ │ └── RPi2 │ │ │ ├── HelloTriangle2.ex-meta │ │ │ ├── HelloTriangle2.lpi │ │ │ ├── HelloTriangle2.lpr │ │ │ ├── README.txt │ │ │ └── libhello_triangle2.a │ ├── HelloVideo │ │ ├── RPi │ │ │ ├── HelloVideo.ex-meta │ │ │ ├── HelloVideo.lpi │ │ │ ├── HelloVideo.lpr │ │ │ ├── README.txt │ │ │ └── libhello_video.a │ │ ├── RPi2 │ │ │ ├── HelloVideo.ex-meta │ │ │ ├── HelloVideo.lpi │ │ │ ├── HelloVideo.lpr │ │ │ ├── README.txt │ │ │ └── libhello_video.a │ │ └── RPi4 │ │ │ ├── HelloVideo.ex-meta │ │ │ ├── HelloVideo.lpi │ │ │ ├── HelloVideo.lpr │ │ │ ├── README.txt │ │ │ └── libhello_video.a │ ├── HelloVideocube │ │ ├── RPi │ │ │ ├── HelloVideocube.ex-meta │ │ │ ├── HelloVideocube.lpi │ │ │ ├── HelloVideocube.lpr │ │ │ ├── README.txt │ │ │ └── libhello_videocube.a │ │ └── RPi2 │ │ │ ├── HelloVideocube.ex-meta │ │ │ ├── HelloVideocube.lpi │ │ │ ├── HelloVideocube.lpr │ │ │ ├── README.txt │ │ │ └── libhello_videocube.a │ ├── Media │ │ ├── Djenne_128_128.raw │ │ ├── Gaudi_128_128.raw │ │ ├── Lucca_128_128.raw │ │ ├── teapot.obj.dat │ │ └── test.h264 │ └── README.md ├── OpenGLES │ ├── HelloGLES │ │ └── RPi2 │ │ │ ├── GLESUnit.pas │ │ │ ├── HelloGLES.ex-meta │ │ │ ├── HelloGLES.lpi │ │ │ ├── HelloGLES.lpr │ │ │ ├── Logo.bmp │ │ │ └── README.txt │ ├── HelloGLES2 │ │ └── RPi2 │ │ │ ├── GLES2Unit.pas │ │ │ ├── HelloGLES2.ex-meta │ │ │ ├── HelloGLES2.lpi │ │ │ ├── HelloGLES2.lpr │ │ │ └── README.txt │ └── README.md ├── OpenVG │ ├── AppFontsDemo │ │ └── RPi3 │ │ │ ├── AppFontsDemo.ex-meta │ │ │ ├── README.txt │ │ │ ├── blazed.inc │ │ │ ├── lcdphone.inc │ │ │ ├── roughbrush.inc │ │ │ ├── ultiboappfonts.lpi │ │ │ └── ultiboappfonts.lpr │ ├── HelloVG │ │ └── RPi2 │ │ │ ├── HelloVG.ex-meta │ │ │ ├── HelloVG.lpi │ │ │ ├── HelloVG.lpr │ │ │ └── README.txt │ ├── MultipleLayers │ │ └── RPi2 │ │ │ ├── MultipleLayers.ex-meta │ │ │ ├── MultipleLayers.lpi │ │ │ ├── MultipleLayers.lpr │ │ │ └── README.txt │ ├── README.md │ └── ShapesDemo │ │ └── RPi2 │ │ ├── README.txt │ │ ├── ShapesDemo.ex-meta │ │ ├── ShapesDemo.lpi │ │ ├── ShapesDemo.lpr │ │ └── Ultibo.jpg ├── README.md └── RaspiCam │ ├── README.md │ ├── RaspiStill │ ├── RPi │ │ ├── README.txt │ │ ├── RaspiStill.ex-meta │ │ ├── RaspiStill.lpi │ │ ├── RaspiStill.lpr │ │ ├── libraspistill.a │ │ └── libraspiyuv.a │ ├── RPi2 │ │ ├── README.txt │ │ ├── RaspiStill.ex-meta │ │ ├── RaspiStill.lpi │ │ ├── RaspiStill.lpr │ │ ├── libraspistill.a │ │ └── libraspiyuv.a │ └── RPi4 │ │ ├── README.txt │ │ ├── RaspiStill.ex-meta │ │ ├── RaspiStill.lpi │ │ ├── RaspiStill.lpr │ │ ├── libraspistill.a │ │ └── libraspiyuv.a │ └── RaspiVid │ ├── RPi │ ├── README.txt │ ├── RaspiVid.ex-meta │ ├── RaspiVid.lpi │ ├── RaspiVid.lpr │ ├── libraspivid.a │ └── libraspividyuv.a │ ├── RPi2 │ ├── README.txt │ ├── RaspiVid.ex-meta │ ├── RaspiVid.lpi │ ├── RaspiVid.lpr │ ├── libraspivid.a │ └── libraspividyuv.a │ └── RPi4 │ ├── README.txt │ ├── RaspiVid.ex-meta │ ├── RaspiVid.lpi │ ├── RaspiVid.lpr │ ├── libraspivid.a │ └── libraspividyuv.a └── examples.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | 19 | # Binary files 20 | *.pcm binary 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # Windows files 21 | *.exe 22 | *.bat 23 | *.cmd 24 | 25 | # Free Pascal files 26 | *.o 27 | *.ppu 28 | 29 | # Lazarus files 30 | *.lps 31 | *.elf 32 | kern*.img 33 | *.list 34 | *.compiled 35 | 36 | -------------------------------------------------------------------------------- /01-HelloWorld/QEMU/HelloWorld.ex-meta: -------------------------------------------------------------------------------- 1 | { "Hello World (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Getting Started"], 4 | "Description" : "The classic hello world example project for getting started with Ultibo.\r\n\r\nNot quite the standard single line example, demonstrates creating a console window and writing text on the screen.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /01-HelloWorld/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 01 Hello World 2 | 3 | The classic hello world example project for getting started with Ultibo. 4 | 5 | Not quite the standard single line example, demonstrates creating a console window and writing text on the screen. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /01-HelloWorld/RPi/HelloWorld.ex-meta: -------------------------------------------------------------------------------- 1 | { "Hello World (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Getting Started"], 4 | "Description" : "The classic hello world example project for getting started with Ultibo.\r\n\r\nNot quite the standard single line example, demonstrates creating a console window and writing text on the screen.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /01-HelloWorld/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 01 Hello World 2 | 3 | The classic hello world example project for getting started with Ultibo. 4 | 5 | Not quite the standard single line example, demonstrates creating a console window and writing text on the screen. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /01-HelloWorld/RPi2/HelloWorld.ex-meta: -------------------------------------------------------------------------------- 1 | { "Hello World (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Getting Started"], 4 | "Description" : "The classic hello world example project for getting started with Ultibo.\r\n\r\nNot quite the standard single line example, demonstrates creating a console window and writing text on the screen.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /01-HelloWorld/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 01 Hello World 2 | 3 | The classic hello world example project for getting started with Ultibo. 4 | 5 | Not quite the standard single line example, demonstrates creating a console window and writing text on the screen. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /01-HelloWorld/RPi3/HelloWorld.ex-meta: -------------------------------------------------------------------------------- 1 | { "Hello World (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Getting Started"], 4 | "Description" : "The classic hello world example project for getting started with Ultibo.\r\n\r\nNot quite the standard single line example, demonstrates creating a console window and writing text on the screen.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /01-HelloWorld/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 01 Hello World 2 | 3 | The classic hello world example project for getting started with Ultibo. 4 | 5 | Not quite the standard single line example, demonstrates creating a console window and writing text on the screen. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /01-HelloWorld/RPi4/HelloWorld.ex-meta: -------------------------------------------------------------------------------- 1 | { "Hello World (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Getting Started"], 4 | "Description" : "The classic hello world example project for getting started with Ultibo.\r\n\r\nNot quite the standard single line example, demonstrates creating a console window and writing text on the screen.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /01-HelloWorld/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 01 Hello World 2 | 3 | The classic hello world example project for getting started with Ultibo. 4 | 5 | Not quite the standard single line example, demonstrates creating a console window and writing text on the screen. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /02-Blinker/RPi/Blinker.ex-meta: -------------------------------------------------------------------------------- 1 | { "Blinker (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["LED", "Blink"], 4 | "Description" : "The starting point for most bare metal programming, blinking an LED on and off.\r\n\r\nWith Ultibo there is an added extra of being able to print text on the screen while this is happening.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /02-Blinker/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 02 Blinker 2 | 3 | The starting point for most bare metal programming, blinking an LED on and off. 4 | 5 | With Ultibo there is an added extra of being able to print text on the screen while this is happening. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /02-Blinker/RPi2/Blinker.ex-meta: -------------------------------------------------------------------------------- 1 | { "Blinker (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["LED", "Blink"], 4 | "Description" : "The starting point for most bare metal programming, blinking an LED on and off.\r\n\r\nWith Ultibo there is an added extra of being able to print text on the screen while this is happening.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /02-Blinker/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 02 Blinker 2 | 3 | The starting point for most bare metal programming, blinking an LED on and off. 4 | 5 | With Ultibo there is an added extra of being able to print text on the screen while this is happening. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /02-Blinker/RPi3/Blinker.ex-meta: -------------------------------------------------------------------------------- 1 | { "Blinker (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["LED", "Blink"], 4 | "Description" : "The starting point for most bare metal programming, blinking an LED on and off.\r\n\r\nWith Ultibo there is an added extra of being able to print text on the screen while this is happening.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /02-Blinker/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 02 Blinker 2 | 3 | The starting point for most bare metal programming, blinking an LED on and off. 4 | 5 | With Ultibo there is an added extra of being able to print text on the screen while this is happening. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /02-Blinker/RPi4/Blinker.ex-meta: -------------------------------------------------------------------------------- 1 | { "Blinker (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["LED", "Blink"], 4 | "Description" : "The starting point for most bare metal programming, blinking an LED on and off.\r\n\r\nWith Ultibo there is an added extra of being able to print text on the screen while this is happening.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /02-Blinker/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 02 Blinker 2 | 3 | The starting point for most bare metal programming, blinking an LED on and off. 4 | 5 | With Ultibo there is an added extra of being able to print text on the screen while this is happening. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /03-ScreenOutput/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 03 Screen Output 2 | 3 | Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions. 4 | 5 | QEMU VersatilePB version 6 | -------------------------------------------------------------------------------- /03-ScreenOutput/QEMU/ScreenOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Screen Output (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Console", "Output"], 4 | "Description" : "Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /03-ScreenOutput/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 03 Screen Output 2 | 3 | Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions. 4 | 5 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 6 | -------------------------------------------------------------------------------- /03-ScreenOutput/RPi/ScreenOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Screen Output (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Console", "Output"], 4 | "Description" : "Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /03-ScreenOutput/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 03 Screen Output 2 | 3 | Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions. 4 | 5 | Raspberry Pi 2B version 6 | -------------------------------------------------------------------------------- /03-ScreenOutput/RPi2/ScreenOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Screen Output (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Console", "Output"], 4 | "Description" : "Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /03-ScreenOutput/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 03 Screen Output 2 | 3 | Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions. 4 | 5 | Raspberry Pi 3B/3B+/3A+/Zero2W version 6 | -------------------------------------------------------------------------------- /03-ScreenOutput/RPi3/ScreenOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Screen Output (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Console", "Output"], 4 | "Description" : "Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /03-ScreenOutput/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 03 Screen Output 2 | 3 | Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions. 4 | 5 | Raspberry Pi 4B/400 version 6 | -------------------------------------------------------------------------------- /03-ScreenOutput/RPi4/ScreenOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Screen Output (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Console", "Output"], 4 | "Description" : "Something a little more advanced this time, manipulating text on the screen using the Ultibo console functions.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /04-KeyboardInput/QEMU/KeyboardInput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Keyboard Input (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Keyboard", "Input"], 4 | "Description" : "If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /04-KeyboardInput/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 04 Keyboard Input 2 | 3 | If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed. 4 | 5 | QEMU VersatilePB version 6 | -------------------------------------------------------------------------------- /04-KeyboardInput/RPi/KeyboardInput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Keyboard Input (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Keyboard", "Input"], 4 | "Description" : "If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /04-KeyboardInput/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 04 Keyboard Input 2 | 3 | If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed. 4 | 5 | It also begins to use the USB functionality of the Raspberry Pi, the primary way for it to interact with the world. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /04-KeyboardInput/RPi2/KeyboardInput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Keyboard Input (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Keyboard", "Input"], 4 | "Description" : "If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /04-KeyboardInput/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 04 Keyboard Input 2 | 3 | If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed. 4 | 5 | It also begins to use the USB functionality of the Raspberry Pi, the primary way for it to interact with the world. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /04-KeyboardInput/RPi3/KeyboardInput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Keyboard Input (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Keyboard", "Input"], 4 | "Description" : "If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /04-KeyboardInput/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 04 Keyboard Input 2 | 3 | If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed. 4 | 5 | It also begins to use the USB functionality of the Raspberry Pi, the primary way for it to interact with the world. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /04-KeyboardInput/RPi4/KeyboardInput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Keyboard Input (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Keyboard", "Input"], 4 | "Description" : "If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /04-KeyboardInput/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 04 Keyboard Input 2 | 3 | If you've been following in order, the last example showed how to print text on the screen and manipulate both color and position, this example shows how to read from a keyboard and print the characters that were typed. 4 | 5 | It also begins to use the USB functionality of the Raspberry Pi, the primary way for it to interact with the world. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /05-TimeDate/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 05 Time Date 2 | 3 | This example starts the network in QEMU and obtains the time from a time server on the internet. 4 | 5 | It also shows the use of some time and date functions and the timezone handling in Ultibo. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /05-TimeDate/QEMU/TimeDate.ex-meta: -------------------------------------------------------------------------------- 1 | { "Time Date (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Time", "Date"], 4 | "Description" : "This example starts the network in QEMU and obtains the time from a time server on the internet.\r\n\r\nIt also shows the use of some time and date functions and the timezone handling in Ultibo.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /05-TimeDate/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 05 Time Date 2 | 3 | This example starts the network on the Raspberry Pi and obtains the time from a time server on the internet. 4 | 5 | It also shows the use of some time and date functions and the timezone handling in Ultibo. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /05-TimeDate/RPi/TimeDate.ex-meta: -------------------------------------------------------------------------------- 1 | { "Time Date (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Time", "Date"], 4 | "Description" : "This example starts the network in QEMU and obtains the time from a time server on the internet.\r\n\r\nIt also shows the use of some time and date functions and the timezone handling in Ultibo.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /05-TimeDate/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 05 Time Date 2 | 3 | This example starts the network on the Raspberry Pi and obtains the time from a time server on the internet. 4 | 5 | It also shows the use of some time and date functions and the timezone handling in Ultibo. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /05-TimeDate/RPi2/TimeDate.ex-meta: -------------------------------------------------------------------------------- 1 | { "Time Date (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Time", "Date"], 4 | "Description" : "This example starts the network in QEMU and obtains the time from a time server on the internet.\r\n\r\nIt also shows the use of some time and date functions and the timezone handling in Ultibo.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /05-TimeDate/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 05 Time Date 2 | 3 | This example starts the network on the Raspberry Pi and obtains the time from a time server on the internet. 4 | 5 | It also shows the use of some time and date functions and the timezone handling in Ultibo. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /05-TimeDate/RPi3/TimeDate.ex-meta: -------------------------------------------------------------------------------- 1 | { "Time Date (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Time", "Date"], 4 | "Description" : "This example starts the network in QEMU and obtains the time from a time server on the internet.\r\n\r\nIt also shows the use of some time and date functions and the timezone handling in Ultibo.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /05-TimeDate/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 05 Time Date 2 | 3 | This example starts the network on the Raspberry Pi and obtains the time from a time server on the internet. 4 | 5 | It also shows the use of some time and date functions and the timezone handling in Ultibo. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /05-TimeDate/RPi4/TimeDate.ex-meta: -------------------------------------------------------------------------------- 1 | { "Time Date (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Time", "Date"], 4 | "Description" : "This example starts the network in QEMU and obtains the time from a time server on the internet.\r\n\r\nIt also shows the use of some time and date functions and the timezone handling in Ultibo.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /06-PascalObjects/QEMU/PascalObjects.ex-meta: -------------------------------------------------------------------------------- 1 | { "Pascal Objects (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Objects", "Classes"], 4 | "Description" : "Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file.\r\n\r\nThis example demonstrates a few of the object pascal classes available in the standard RTL.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /06-PascalObjects/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 06 Pascal Objects 2 | 3 | Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file. 4 | 5 | This example demonstrates a few of the object pascal classes available in the standard RTL. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /06-PascalObjects/RPi/PascalObjects.ex-meta: -------------------------------------------------------------------------------- 1 | { "Pascal Objects (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Objects", "Classes"], 4 | "Description" : "Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file.\r\n\r\nThis example demonstrates a few of the object pascal classes available in the standard RTL.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /06-PascalObjects/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 06 Pascal Objects 2 | 3 | Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file. 4 | 5 | This example demonstrates a few of the object pascal classes available in the standard RTL. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /06-PascalObjects/RPi2/PascalObjects.ex-meta: -------------------------------------------------------------------------------- 1 | { "Pascal Objects (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Objects", "Classes"], 4 | "Description" : "Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file.\r\n\r\nThis example demonstrates a few of the object pascal classes available in the standard RTL.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /06-PascalObjects/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 06 Pascal Objects 2 | 3 | Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file. 4 | 5 | This example demonstrates a few of the object pascal classes available in the standard RTL. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /06-PascalObjects/RPi3/PascalObjects.ex-meta: -------------------------------------------------------------------------------- 1 | { "Pascal Objects (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Objects", "Classes"], 4 | "Description" : "Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file.\r\n\r\nThis example demonstrates a few of the object pascal classes available in the standard RTL.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /06-PascalObjects/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 06 Pascal Objects 2 | 3 | Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file. 4 | 5 | This example demonstrates a few of the object pascal classes available in the standard RTL. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /06-PascalObjects/RPi4/PascalObjects.ex-meta: -------------------------------------------------------------------------------- 1 | { "Pascal Objects (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Objects", "Classes"], 4 | "Description" : "Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file.\r\n\r\nThis example demonstrates a few of the object pascal classes available in the standard RTL.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /06-PascalObjects/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 06 Pascal Objects 2 | 3 | Free Pascal supports both procedural programming and object oriented programming, you can mix and match both within the same program and even within the same source file. 4 | 5 | This example demonstrates a few of the object pascal classes available in the standard RTL. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /07-Exceptions/QEMU/Exceptions.ex-meta: -------------------------------------------------------------------------------- 1 | { "Exceptions (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Exceptions", "Errors"], 4 | "Description" : "Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner.\r\n\r\nUltibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /07-Exceptions/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 07 Exceptions 2 | 3 | Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner. 4 | 5 | Ultibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /07-Exceptions/RPi/Exceptions.ex-meta: -------------------------------------------------------------------------------- 1 | { "Exceptions (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Exceptions", "Errors"], 4 | "Description" : "Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner.\r\n\r\nUltibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /07-Exceptions/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 07 Exceptions 2 | 3 | Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner. 4 | 5 | Ultibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /07-Exceptions/RPi2/Exceptions.ex-meta: -------------------------------------------------------------------------------- 1 | { "Exceptions (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Exceptions", "Errors"], 4 | "Description" : "Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner.\r\n\r\nUltibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /07-Exceptions/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 07 Exceptions 2 | 3 | Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner. 4 | 5 | Ultibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /07-Exceptions/RPi3/Exceptions.ex-meta: -------------------------------------------------------------------------------- 1 | { "Exceptions (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Exceptions", "Errors"], 4 | "Description" : "Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner.\r\n\r\nUltibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /07-Exceptions/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 07 Exceptions 2 | 3 | Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner. 4 | 5 | Ultibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /07-Exceptions/RPi4/Exceptions.ex-meta: -------------------------------------------------------------------------------- 1 | { "Exceptions (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Exceptions", "Errors"], 4 | "Description" : "Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner.\r\n\r\nUltibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /07-Exceptions/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 07 Exceptions 2 | 3 | Exceptions are a feature of many modern languages, allowing you to signal abnormal conditions and to respond to errors in a controlled manner. 4 | 5 | Ultibo supports both software exceptions generated by the run time library or the program and hardware exceptions generated by the CPU. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /08-FileHandling/QEMU/FileHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "File Handling (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Files", "Folders"], 4 | "Description" : "A simple demo of the file handling capability of Ultibo.\r\n\r\nAll standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /08-FileHandling/QEMU/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /08-FileHandling/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 08 File Handling 2 | 3 | A simple demo of the file handling capability of Ultibo. 4 | 5 | All standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /08-FileHandling/QEMU/disk.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/08-FileHandling/QEMU/disk.img -------------------------------------------------------------------------------- /08-FileHandling/RPi/FileHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "File Handling (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Files", "Folders"], 4 | "Description" : "A simple demo of the file handling capability of Ultibo.\r\n\r\nAll standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /08-FileHandling/RPi/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /08-FileHandling/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 08 File Handling 2 | 3 | A simple demo of the file handling capability of Ultibo. 4 | 5 | All standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /08-FileHandling/RPi2/FileHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "File Handling (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Files", "Folders"], 4 | "Description" : "A simple demo of the file handling capability of Ultibo.\r\n\r\nAll standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /08-FileHandling/RPi2/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /08-FileHandling/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 08 File Handling 2 | 3 | A simple demo of the file handling capability of Ultibo. 4 | 5 | All standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /08-FileHandling/RPi3/FileHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "File Handling (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Files", "Folders"], 4 | "Description" : "A simple demo of the file handling capability of Ultibo.\r\n\r\nAll standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /08-FileHandling/RPi3/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /08-FileHandling/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 08 File Handling 2 | 3 | A simple demo of the file handling capability of Ultibo. 4 | 5 | All standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /08-FileHandling/RPi4/FileHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "File Handling (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Files", "Folders"], 4 | "Description" : "A simple demo of the file handling capability of Ultibo.\r\n\r\nAll standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /08-FileHandling/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 08 File Handling 2 | 3 | A simple demo of the file handling capability of Ultibo. 4 | 5 | All standard file operations are supported on FAT, NTFS and CDFS file systems, devices supported include USB Flash drives, hard disks, CD/DVD drives as well as MMC/SD cards. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /09-LogOutput/QEMU/LogOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Log Output (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Logging", "Debug"], 4 | "Description" : "This example shows how to output logging information to a console window.\r\n\r\nUltibo supports logging to the console, to a file or to the network via syslog.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /09-LogOutput/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 09 Log Output 2 | 3 | This example shows how to output logging information to a console window. 4 | 5 | Ultibo supports logging to the console, a file, a UART or to the network via syslog. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /09-LogOutput/RPi/LogOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Log Output (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Logging", "Debug"], 4 | "Description" : "This example shows how to output logging information to a console window.\r\n\r\nUltibo supports logging to the console, to a file or to the network via syslog.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /09-LogOutput/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 09 Log Output 2 | 3 | This example shows how to output logging information to a console window. 4 | 5 | Ultibo supports logging to the console, a file, a UART or to the network via syslog. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /09-LogOutput/RPi2/LogOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Log Output (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Logging", "Debug"], 4 | "Description" : "This example shows how to output logging information to a console window.\r\n\r\nUltibo supports logging to the console, to a file or to the network via syslog.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /09-LogOutput/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 09 Log Output 2 | 3 | This example shows how to output logging information to a console window. 4 | 5 | Ultibo supports logging to the console, a file, a UART or to the network via syslog. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /09-LogOutput/RPi3/LogOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Log Output (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Logging", "Debug"], 4 | "Description" : "This example shows how to output logging information to a console window.\r\n\r\nUltibo supports logging to the console, to a file or to the network via syslog.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /09-LogOutput/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 09 Log Output 2 | 3 | This example shows how to output logging information to a console window. 4 | 5 | Ultibo supports logging to the console, a file, a UART or to the network via syslog. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /09-LogOutput/RPi4/LogOutput.ex-meta: -------------------------------------------------------------------------------- 1 | { "Log Output (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Logging", "Debug"], 4 | "Description" : "This example shows how to output logging information to a console window.\r\n\r\nUltibo supports logging to the console, to a file or to the network via syslog.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /09-LogOutput/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 09 Log Output 2 | 3 | This example shows how to output logging information to a console window. 4 | 5 | Ultibo supports logging to the console, a file, a UART or to the network via syslog. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /10-MultiThreading/QEMU/MultiThreading.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi Threading (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Threads"], 4 | "Description" : "Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example).\r\n\r\nEven though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /10-MultiThreading/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 10 Multi Threading 2 | 3 | Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example). 4 | 5 | Even though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /10-MultiThreading/QEMU/Thread1.pas: -------------------------------------------------------------------------------- 1 | unit Thread1; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, SysUtils, Console; 9 | 10 | {This is a standard Free Pascal RTL thread, it needs a thread function to run 11 | which is defined here, the implementation of the function is below.} 12 | function Thread1Execute(Parameter:Pointer):PtrInt; 13 | 14 | implementation 15 | 16 | function Thread1Execute(Parameter:Pointer):PtrInt; 17 | var 18 | Count:Integer; 19 | WindowHandle:TWindowHandle; 20 | begin 21 | Thread1Execute:=0; 22 | 23 | {This is the thread function for Thread1, when Thread1 is created it will start 24 | running here and will continue to run until it exits here or calls EndThread. 25 | 26 | Most threads will do something in a loop and only exit when they have either 27 | completed their task or been signalled by another thread to end. 28 | 29 | For this example we'll use an endless loop but first let's create a console 30 | window to print some output.} 31 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_TOPRIGHT,False); 32 | 33 | {We'll also set the thread name to something meaningful so we can use it in our output} 34 | ThreadSetName(GetCurrentThreadId,'Example Thread1'); 35 | 36 | {And write something to the console to say we're here.} 37 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(GetCurrentThreadId) + ' my thread ID is ' + IntToHex(GetCurrentThreadId,8)); 38 | Count:=0; 39 | 40 | while True do 41 | begin 42 | {Let's keep a count of how many times this thread loops} 43 | Inc(Count); 44 | 45 | {And then we'll print that on our console window} 46 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(GetCurrentThreadId) + ' count is now ' + IntToStr(Count)); 47 | 48 | {Even though Ultibo uses preemptive thread scheduling every thread should either 49 | wait or sleep when it has nothing to do, that way other threads can use the CPU 50 | time for their work.} 51 | Sleep(Random(4000)); 52 | end; 53 | end; 54 | 55 | end. 56 | 57 | -------------------------------------------------------------------------------- /10-MultiThreading/QEMU/Thread2.pas: -------------------------------------------------------------------------------- 1 | unit Thread2; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, Classes, SysUtils, Console; 9 | 10 | {This is the object based thread for our example. 11 | 12 | We need to define a class for our thread object, it will be based on the class 13 | TThread. 14 | 15 | The only method we need to define is Execute which is where the thread will do 16 | its work.} 17 | type 18 | TThread2Object = class(TThread) 19 | public 20 | procedure Execute; override; 21 | end; 22 | 23 | implementation 24 | 25 | procedure TThread2Object.Execute; 26 | var 27 | Count:Integer; 28 | WindowHandle:TWindowHandle; 29 | begin 30 | {This is the thread function for our TThread2Object. When Thread2 is created it 31 | will start running here and will continue to run until it exits here. 32 | 33 | Like our other thread we'll use an endless loop and create a console window 34 | to print some output.} 35 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_BOTTOMRIGHT,False); 36 | 37 | {Set the thread name of this thread to Example Thread2} 38 | ThreadSetName(GetCurrentThreadId,'Example Thread2'); 39 | 40 | {And write something to the console to say we're here.} 41 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(ThreadID) + ' my thread ID is ' + IntToHex(ThreadID,8)); 42 | Count:=0; 43 | 44 | while True do 45 | begin 46 | {Update our loop counter} 47 | Inc(Count); 48 | 49 | {And print that on our console window} 50 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(ThreadID) + ' count is now ' + IntToStr(Count)); 51 | 52 | {Sleep so other threads can use the CPU time.} 53 | Sleep(Random(6000)); 54 | end; 55 | end; 56 | 57 | end. 58 | 59 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi/MultiThreading.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi Threading (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Threads"], 4 | "Description" : "Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example).\r\n\r\nEven though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /10-MultiThreading/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 10 Multi Threading 2 | 3 | Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example). 4 | 5 | Even though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi/Thread1.pas: -------------------------------------------------------------------------------- 1 | unit Thread1; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, SysUtils, Console; 9 | 10 | {This is a standard Free Pascal RTL thread, it needs a thread function to run 11 | which is defined here, the implementation of the function is below.} 12 | function Thread1Execute(Parameter:Pointer):PtrInt; 13 | 14 | implementation 15 | 16 | function Thread1Execute(Parameter:Pointer):PtrInt; 17 | var 18 | Count:Integer; 19 | WindowHandle:TWindowHandle; 20 | begin 21 | Thread1Execute:=0; 22 | 23 | {This is the thread function for Thread1, when Thread1 is created it will start 24 | running here and will continue to run until it exits here or calls EndThread. 25 | 26 | Most threads will do something in a loop and only exit when they have either 27 | completed their task or been signalled by another thread to end. 28 | 29 | For this example we'll use an endless loop but first let's create a console 30 | window to print some output.} 31 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_TOPRIGHT,False); 32 | 33 | {We'll also set the thread name to something meaningful so we can use it in our output} 34 | ThreadSetName(GetCurrentThreadId,'Example Thread1'); 35 | 36 | {And write something to the console to say we're here.} 37 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(GetCurrentThreadId) + ' my thread ID is ' + IntToHex(GetCurrentThreadId,8)); 38 | Count:=0; 39 | 40 | while True do 41 | begin 42 | {Let's keep a count of how many times this thread loops} 43 | Inc(Count); 44 | 45 | {And then we'll print that on our console window} 46 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(GetCurrentThreadId) + ' count is now ' + IntToStr(Count)); 47 | 48 | {Even though Ultibo uses preemptive thread scheduling every thread should either 49 | wait or sleep when it has nothing to do, that way other threads can use the CPU 50 | time for their work.} 51 | Sleep(Random(4000)); 52 | end; 53 | end; 54 | 55 | end. 56 | 57 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi/Thread2.pas: -------------------------------------------------------------------------------- 1 | unit Thread2; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, Classes, SysUtils, Console; 9 | 10 | {This is the object based thread for our example. 11 | 12 | We need to define a class for our thread object, it will be based on the class 13 | TThread. 14 | 15 | The only method we need to define is Execute which is where the thread will do 16 | its work.} 17 | type 18 | TThread2Object = class(TThread) 19 | public 20 | procedure Execute; override; 21 | end; 22 | 23 | implementation 24 | 25 | procedure TThread2Object.Execute; 26 | var 27 | Count:Integer; 28 | WindowHandle:TWindowHandle; 29 | begin 30 | {This is the thread function for our TThread2Object. When Thread2 is created it 31 | will start running here and will continue to run until it exits here. 32 | 33 | Like our other thread we'll use an endless loop and create a console window 34 | to print some output.} 35 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_BOTTOMRIGHT,False); 36 | 37 | {Set the thread name of this thread to Example Thread2} 38 | ThreadSetName(GetCurrentThreadId,'Example Thread2'); 39 | 40 | {And write something to the console to say we're here.} 41 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(ThreadID) + ' my thread ID is ' + IntToHex(ThreadID,8)); 42 | Count:=0; 43 | 44 | while True do 45 | begin 46 | {Update our loop counter} 47 | Inc(Count); 48 | 49 | {And print that on our console window} 50 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(ThreadID) + ' count is now ' + IntToStr(Count)); 51 | 52 | {Sleep so other threads can use the CPU time.} 53 | Sleep(Random(6000)); 54 | end; 55 | end; 56 | 57 | end. 58 | 59 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi2/MultiThreading.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi Threading (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Threads"], 4 | "Description" : "Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example).\r\n\r\nEven though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /10-MultiThreading/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 10 Multi Threading 2 | 3 | Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example). 4 | 5 | Even though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi2/Thread1.pas: -------------------------------------------------------------------------------- 1 | unit Thread1; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, SysUtils, Console; 9 | 10 | {This is a standard Free Pascal RTL thread, it needs a thread function to run 11 | which is defined here, the implementation of the function is below.} 12 | function Thread1Execute(Parameter:Pointer):PtrInt; 13 | 14 | implementation 15 | 16 | function Thread1Execute(Parameter:Pointer):PtrInt; 17 | var 18 | Count:Integer; 19 | WindowHandle:TWindowHandle; 20 | begin 21 | Thread1Execute:=0; 22 | 23 | {This is the thread function for Thread1, when Thread1 is created it will start 24 | running here and will continue to run until it exits here or calls EndThread. 25 | 26 | Most threads will do something in a loop and only exit when they have either 27 | completed their task or been signalled by another thread to end. 28 | 29 | For this example we'll use an endless loop but first let's create a console 30 | window to print some output.} 31 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_TOPRIGHT,False); 32 | 33 | {We'll also set the thread name to something meaningful so we can use it in our output} 34 | ThreadSetName(GetCurrentThreadId,'Example Thread1'); 35 | 36 | {And write something to the console to say we're here.} 37 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(GetCurrentThreadId) + ' my thread ID is ' + IntToHex(GetCurrentThreadId,8)); 38 | Count:=0; 39 | 40 | while True do 41 | begin 42 | {Let's keep a count of how many times this thread loops} 43 | Inc(Count); 44 | 45 | {And then we'll print that on our console window} 46 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(GetCurrentThreadId) + ' count is now ' + IntToStr(Count)); 47 | 48 | {Even though Ultibo uses preemptive thread scheduling every thread should either 49 | wait or sleep when it has nothing to do, that way other threads can use the CPU 50 | time for their work.} 51 | Sleep(Random(4000)); 52 | end; 53 | end; 54 | 55 | end. 56 | 57 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi2/Thread2.pas: -------------------------------------------------------------------------------- 1 | unit Thread2; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, Classes, SysUtils, Console; 9 | 10 | {This is the object based thread for our example. 11 | 12 | We need to define a class for our thread object, it will be based on the class 13 | TThread. 14 | 15 | The only method we need to define is Execute which is where the thread will do 16 | its work.} 17 | type 18 | TThread2Object = class(TThread) 19 | public 20 | procedure Execute; override; 21 | end; 22 | 23 | implementation 24 | 25 | procedure TThread2Object.Execute; 26 | var 27 | Count:Integer; 28 | WindowHandle:TWindowHandle; 29 | begin 30 | {This is the thread function for our TThread2Object. When Thread2 is created it 31 | will start running here and will continue to run until it exits here. 32 | 33 | Like our other thread we'll use an endless loop and create a console window 34 | to print some output.} 35 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_BOTTOMRIGHT,False); 36 | 37 | {Set the thread name of this thread to Example Thread2} 38 | ThreadSetName(GetCurrentThreadId,'Example Thread2'); 39 | 40 | {And write something to the console to say we're here.} 41 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(ThreadID) + ' my thread ID is ' + IntToHex(ThreadID,8)); 42 | Count:=0; 43 | 44 | while True do 45 | begin 46 | {Update our loop counter} 47 | Inc(Count); 48 | 49 | {And print that on our console window} 50 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(ThreadID) + ' count is now ' + IntToStr(Count)); 51 | 52 | {Sleep so other threads can use the CPU time.} 53 | Sleep(Random(6000)); 54 | end; 55 | end; 56 | 57 | end. 58 | 59 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi3/MultiThreading.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi Threading (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Threads"], 4 | "Description" : "Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example).\r\n\r\nEven though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /10-MultiThreading/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 10 Multi Threading 2 | 3 | Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example). 4 | 5 | Even though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi3/Thread1.pas: -------------------------------------------------------------------------------- 1 | unit Thread1; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, SysUtils, Console; 9 | 10 | {This is a standard Free Pascal RTL thread, it needs a thread function to run 11 | which is defined here, the implementation of the function is below.} 12 | function Thread1Execute(Parameter:Pointer):PtrInt; 13 | 14 | implementation 15 | 16 | function Thread1Execute(Parameter:Pointer):PtrInt; 17 | var 18 | Count:Integer; 19 | WindowHandle:TWindowHandle; 20 | begin 21 | Thread1Execute:=0; 22 | 23 | {This is the thread function for Thread1, when Thread1 is created it will start 24 | running here and will continue to run until it exits here or calls EndThread. 25 | 26 | Most threads will do something in a loop and only exit when they have either 27 | completed their task or been signalled by another thread to end. 28 | 29 | For this example we'll use an endless loop but first let's create a console 30 | window to print some output.} 31 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_TOPRIGHT,False); 32 | 33 | {We'll also set the thread name to something meaningful so we can use it in our output} 34 | ThreadSetName(GetCurrentThreadId,'Example Thread1'); 35 | 36 | {And write something to the console to say we're here.} 37 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(GetCurrentThreadId) + ' my thread ID is ' + IntToHex(GetCurrentThreadId,8)); 38 | Count:=0; 39 | 40 | while True do 41 | begin 42 | {Let's keep a count of how many times this thread loops} 43 | Inc(Count); 44 | 45 | {And then we'll print that on our console window} 46 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(GetCurrentThreadId) + ' count is now ' + IntToStr(Count)); 47 | 48 | {Even though Ultibo uses preemptive thread scheduling every thread should either 49 | wait or sleep when it has nothing to do, that way other threads can use the CPU 50 | time for their work.} 51 | Sleep(Random(4000)); 52 | end; 53 | end; 54 | 55 | end. 56 | 57 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi3/Thread2.pas: -------------------------------------------------------------------------------- 1 | unit Thread2; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, Classes, SysUtils, Console; 9 | 10 | {This is the object based thread for our example. 11 | 12 | We need to define a class for our thread object, it will be based on the class 13 | TThread. 14 | 15 | The only method we need to define is Execute which is where the thread will do 16 | its work.} 17 | type 18 | TThread2Object = class(TThread) 19 | public 20 | procedure Execute; override; 21 | end; 22 | 23 | implementation 24 | 25 | procedure TThread2Object.Execute; 26 | var 27 | Count:Integer; 28 | WindowHandle:TWindowHandle; 29 | begin 30 | {This is the thread function for our TThread2Object. When Thread2 is created it 31 | will start running here and will continue to run until it exits here. 32 | 33 | Like our other thread we'll use an endless loop and create a console window 34 | to print some output.} 35 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_BOTTOMRIGHT,False); 36 | 37 | {Set the thread name of this thread to Example Thread2} 38 | ThreadSetName(GetCurrentThreadId,'Example Thread2'); 39 | 40 | {And write something to the console to say we're here.} 41 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(ThreadID) + ' my thread ID is ' + IntToHex(ThreadID,8)); 42 | Count:=0; 43 | 44 | while True do 45 | begin 46 | {Update our loop counter} 47 | Inc(Count); 48 | 49 | {And print that on our console window} 50 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(ThreadID) + ' count is now ' + IntToStr(Count)); 51 | 52 | {Sleep so other threads can use the CPU time.} 53 | Sleep(Random(6000)); 54 | end; 55 | end; 56 | 57 | end. 58 | 59 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi4/MultiThreading.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi Threading (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Threads"], 4 | "Description" : "Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example).\r\n\r\nEven though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /10-MultiThreading/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 10 Multi Threading 2 | 3 | Finally the examples you've been waiting to see, multiple threads and multiple CPUs (in the next example). 4 | 5 | Even though you might not realise it Ultibo is always multi threaded, even the simplest hello world example has a number of threads running in the background. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /10-MultiThreading/RPi4/Thread2.pas: -------------------------------------------------------------------------------- 1 | unit Thread2; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | GlobalConst, GlobalTypes, Threads, Classes, SysUtils, Console; 9 | 10 | {This is the object based thread for our example. 11 | 12 | We need to define a class for our thread object, it will be based on the class 13 | TThread. 14 | 15 | The only method we need to define is Execute which is where the thread will do 16 | its work.} 17 | type 18 | TThread2Object = class(TThread) 19 | public 20 | procedure Execute; override; 21 | end; 22 | 23 | implementation 24 | 25 | procedure TThread2Object.Execute; 26 | var 27 | Count:Integer; 28 | WindowHandle:TWindowHandle; 29 | begin 30 | {This is the thread function for our TThread2Object. When Thread2 is created it 31 | will start running here and will continue to run until it exits here. 32 | 33 | Like our other thread we'll use an endless loop and create a console window 34 | to print some output.} 35 | WindowHandle:=ConsoleWindowCreate(ConsoleDeviceGetDefault,CONSOLE_POSITION_BOTTOMRIGHT,False); 36 | 37 | {Set the thread name of this thread to Example Thread2} 38 | ThreadSetName(GetCurrentThreadId,'Example Thread2'); 39 | 40 | {And write something to the console to say we're here.} 41 | ConsoleWindowWriteLn(WindowHandle,'Hi, this is thread ' + ThreadGetName(ThreadID) + ' my thread ID is ' + IntToHex(ThreadID,8)); 42 | Count:=0; 43 | 44 | while True do 45 | begin 46 | {Update our loop counter} 47 | Inc(Count); 48 | 49 | {And print that on our console window} 50 | ConsoleWindowWriteLn(WindowHandle,'Thread ' + ThreadGetName(ThreadID) + ' count is now ' + IntToStr(Count)); 51 | 52 | {Sleep so other threads can use the CPU time.} 53 | Sleep(Random(6000)); 54 | end; 55 | end; 56 | 57 | end. 58 | 59 | -------------------------------------------------------------------------------- /11-MultiCPU/RPi2/MultiCPU.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi CPU (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["CPU", "Processor"], 4 | "Description" : "Following on from the previous example on multi threading, this one shows the multi CPU behaviour of Ultibo.\r\n\r\nMulti CPU support is built in like multi threading, you don't need to enable anything it is just there.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /11-MultiCPU/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 11 Multi CPU 2 | 3 | Following on from the previous example on multi threading, this one shows the multi CPU behaviour of Ultibo. 4 | 5 | Multi CPU support is built in like multi threading, you don't need to enable anything it is just there. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /11-MultiCPU/RPi3/MultiCPU.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi CPU (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["CPU", "Processor"], 4 | "Description" : "Following on from the previous example on multi threading, this one shows the multi CPU behaviour of Ultibo.\r\n\r\nMulti CPU support is built in like multi threading, you don't need to enable anything it is just there.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /11-MultiCPU/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 11 Multi CPU 2 | 3 | Following on from the previous example on multi threading, this one shows the multi CPU behaviour of Ultibo. 4 | 5 | Multi CPU support is built in like multi threading, you don't need to enable anything it is just there. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /11-MultiCPU/RPi4/MultiCPU.ex-meta: -------------------------------------------------------------------------------- 1 | { "Multi CPU (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["CPU", "Processor"], 4 | "Description" : "Following on from the previous example on multi threading, this one shows the multi CPU behaviour of Ultibo.\r\n\r\nMulti CPU support is built in like multi threading, you don't need to enable anything it is just there.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /11-MultiCPU/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 11 Multi CPU 2 | 3 | Following on from the previous example on multi threading, this one shows the multi CPU behaviour of Ultibo. 4 | 5 | Multi CPU support is built in like multi threading, you don't need to enable anything it is just there. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /12-WebServer/QEMU/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-net user,hostfwd=tcp::5080-:80,hostfwd=tcp::5023-:23 -net nic -drive file=disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /12-WebServer/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 12 Web Server 2 | 3 | This example shows the use of the HTTP unit in Ultibo which contain both client and server classes. 4 | 5 | Using the HTTP Listener class a simple web server can be created in just a few lines of code. 6 | 7 | Just for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands. 8 | 9 | QEMU VersatilePB version 10 | -------------------------------------------------------------------------------- /12-WebServer/QEMU/WebServer.ex-meta: -------------------------------------------------------------------------------- 1 | { "Web Server (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Web", "HTTP", "Sockets"], 4 | "Description" : "This example shows the use of the HTTP unit in Ultibo which contain both client and server classes.\r\n\r\nUsing the HTTP Listener class a simple web server can be created in just a few lines of code.\r\n\r\nJust for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /12-WebServer/QEMU/disk.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/12-WebServer/QEMU/disk.img -------------------------------------------------------------------------------- /12-WebServer/RPi/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-netdev user,id=net0,hostfwd=tcp::5080-:80,hostfwd=tcp::5023-:23 -device usb-net,netdev=net0 -drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /12-WebServer/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 12 Web Server 2 | 3 | This example shows the use of the HTTP unit in Ultibo which contain both client and server classes. 4 | 5 | Using the HTTP Listener class a simple web server can be created in just a few lines of code. 6 | 7 | Just for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands. 8 | 9 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 10 | -------------------------------------------------------------------------------- /12-WebServer/RPi/WebServer.ex-meta: -------------------------------------------------------------------------------- 1 | { "Web Server (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Web", "HTTP", "Sockets"], 4 | "Description" : "This example shows the use of the HTTP unit in Ultibo which contain both client and server classes.\r\n\r\nUsing the HTTP Listener class a simple web server can be created in just a few lines of code.\r\n\r\nJust for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /12-WebServer/RPi2/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-netdev user,id=net0,hostfwd=tcp::5080-:80,hostfwd=tcp::5023-:23 -device usb-net,netdev=net0 -drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /12-WebServer/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 12 Web Server 2 | 3 | This example shows the use of the HTTP unit in Ultibo which contain both client and server classes. 4 | 5 | Using the HTTP Listener class a simple web server can be created in just a few lines of code. 6 | 7 | Just for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands. 8 | 9 | Raspberry Pi 2B version 10 | -------------------------------------------------------------------------------- /12-WebServer/RPi2/WebServer.ex-meta: -------------------------------------------------------------------------------- 1 | { "Web Server (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Web", "HTTP", "Sockets"], 4 | "Description" : "This example shows the use of the HTTP unit in Ultibo which contain both client and server classes.\r\n\r\nUsing the HTTP Listener class a simple web server can be created in just a few lines of code.\r\n\r\nJust for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /12-WebServer/RPi3/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-netdev user,id=net0,hostfwd=tcp::5080-:80,hostfwd=tcp::5023-:23 -device usb-net,netdev=net0 -drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /12-WebServer/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 12 Web Server 2 | 3 | This example shows the use of the HTTP unit in Ultibo which contain both client and server classes. 4 | 5 | Using the HTTP Listener class a simple web server can be created in just a few lines of code. 6 | 7 | Just for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands. 8 | 9 | Raspberry Pi 3B/3B+/3A+/Zero2W version 10 | -------------------------------------------------------------------------------- /12-WebServer/RPi3/WebServer.ex-meta: -------------------------------------------------------------------------------- 1 | { "Web Server (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Web", "HTTP", "Sockets"], 4 | "Description" : "This example shows the use of the HTTP unit in Ultibo which contain both client and server classes.\r\n\r\nUsing the HTTP Listener class a simple web server can be created in just a few lines of code.\r\n\r\nJust for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /12-WebServer/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 12 Web Server 2 | 3 | This example shows the use of the HTTP unit in Ultibo which contain both client and server classes. 4 | 5 | Using the HTTP Listener class a simple web server can be created in just a few lines of code. 6 | 7 | Just for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands. 8 | 9 | Raspberry Pi 4B/400 version 10 | -------------------------------------------------------------------------------- /12-WebServer/RPi4/WebServer.ex-meta: -------------------------------------------------------------------------------- 1 | { "Web Server (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Web", "HTTP", "Sockets"], 4 | "Description" : "This example shows the use of the HTTP unit in Ultibo which contain both client and server classes.\r\n\r\nUsing the HTTP Listener class a simple web server can be created in just a few lines of code.\r\n\r\nJust for fun the Shell and RemoteShell units as also included so you can Telnet to the device and run commands.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /13-SerialConnection/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 13 Serial Connection 2 | 3 | The first example that shows interfacing with the world using the peripheral devices, however because this is the QEMU version everything you need is already included. 4 | 5 | In QEMU the output from the serial port is automatically sent to the serial console (select View, serial0 from the menu) and you can also type in the window to send serial input. 6 | 7 | QEMU VersatilePB version 8 | -------------------------------------------------------------------------------- /13-SerialConnection/QEMU/SerialConnection.ex-meta: -------------------------------------------------------------------------------- 1 | { "Serial Connection (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Serial", "UART"], 4 | "Description" : "The first example that shows interfacing with the world using the peripheral devices, however because this is the QEMU version everything you need is already included.\r\n\r\nIn QEMU the output from the serial port is automatically sent to the serial console (select View, serial0 from the menu) and you can also type in the window to send serial input.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /13-SerialConnection/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 13 Serial Connection 2 | 3 | The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out. 4 | 5 | You will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter. 6 | 7 | By default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation: 8 | 9 | Raspberry Pi Model A and B 10 | 11 | https://pinout.xyz/ 12 | 13 | Raspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W 14 | 15 | https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio 16 | 17 | You will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters. 18 | 19 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 20 | -------------------------------------------------------------------------------- /13-SerialConnection/RPi/SerialConnection.ex-meta: -------------------------------------------------------------------------------- 1 | { "Serial Connection (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Serial", "UART"], 4 | "Description" : "The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out.\r\n\r\nYou will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter.\r\n\r\nBy default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation:\r\n\r\nRaspberry Pi Model A and B\r\n\r\n https://pinout.xyz/\r\n\r\nRaspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W\r\n\r\n https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header\r\n\r\nYou will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /13-SerialConnection/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 13 Serial Connection 2 | 3 | The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out. 4 | 5 | You will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter. 6 | 7 | By default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation: 8 | 9 | Raspberry Pi Model A and B 10 | 11 | https://pinout.xyz/ 12 | 13 | Raspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W 14 | 15 | https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio 16 | 17 | You will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters. 18 | 19 | Raspberry Pi 2B version 20 | -------------------------------------------------------------------------------- /13-SerialConnection/RPi2/SerialConnection.ex-meta: -------------------------------------------------------------------------------- 1 | { "Serial Connection (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Serial", "UART"], 4 | "Description" : "The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out.\r\n\r\nYou will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter.\r\n\r\nBy default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation:\r\n\r\nRaspberry Pi Model A and B\r\n\r\n https://pinout.xyz/\r\n\r\nRaspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W\r\n\r\n https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header\r\n\r\nYou will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /13-SerialConnection/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 13 Serial Connection 2 | 3 | The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out. 4 | 5 | You will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter. 6 | 7 | By default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation: 8 | 9 | Raspberry Pi Model A and B 10 | 11 | https://pinout.xyz/ 12 | 13 | Raspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W 14 | 15 | https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio 16 | 17 | You will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters. 18 | 19 | Raspberry Pi 3B/3B+/3A+/Zero2W version 20 | -------------------------------------------------------------------------------- /13-SerialConnection/RPi3/SerialConnection.ex-meta: -------------------------------------------------------------------------------- 1 | { "Serial Connection (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Serial", "UART"], 4 | "Description" : "The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out.\r\n\r\nYou will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter.\r\n\r\nBy default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation:\r\n\r\nRaspberry Pi Model A and B\r\n\r\n https://pinout.xyz/\r\n\r\nRaspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W\r\n\r\n https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header\r\n\r\nYou will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /13-SerialConnection/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 13 Serial Connection 2 | 3 | The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out. 4 | 5 | You will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter. 6 | 7 | By default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation: 8 | 9 | Raspberry Pi Model A and B 10 | 11 | https://pinout.xyz/ 12 | 13 | Raspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W 14 | 15 | https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio 16 | 17 | You will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters. 18 | 19 | Raspberry Pi 4B/400 version 20 | -------------------------------------------------------------------------------- /13-SerialConnection/RPi4/SerialConnection.ex-meta: -------------------------------------------------------------------------------- 1 | { "Serial Connection (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Serial", "UART"], 4 | "Description" : "The first example that shows interfacing with the world using the peripheral devices, for this example you will need some extra equipment to try it out.\r\n\r\nYou will need to connect the Raspberry Pi to your computer using a serial connection, this could be a direct connection to a serial port or it could be a USB to serial converter.\r\n\r\nBy default the serial (UART) device on the Raspberry Pi will be on pins 14 (Transmit) and 15 (Receive) plus you need to connect a Ground wire as well, to see where the pins are located look at the documentation:\r\n\r\nRaspberry Pi Model A and B\r\n\r\n https://pinout.xyz/\r\n\r\nRaspberry Pi Models A+/B+/Zero/ZeroW/2B/3B/3B+/3A+/4B/400/Zero2W\r\n\r\n https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header\r\n\r\nYou will also need a terminal program like PuTTY on your computer to open the appropriate COM port and type some characters.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /14-GPIOHandling/RPi/GPIOHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "GPIO Handling (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPIO", "LED"], 4 | "Description" : "Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response.\r\n\r\nYou'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /14-GPIOHandling/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 14 GPIO Handling 2 | 3 | Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response. 4 | 5 | You'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /14-GPIOHandling/RPi2/GPIOHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "GPIO Handling (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPIO", "LED"], 4 | "Description" : "Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response.\r\n\r\nYou'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /14-GPIOHandling/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 14 GPIO Handling 2 | 3 | Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response. 4 | 5 | You'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /14-GPIOHandling/RPi3/GPIOHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "GPIO Handling (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["GPIO", "LED"], 4 | "Description" : "Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response.\r\n\r\nYou'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /14-GPIOHandling/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 14 GPIO Handling 2 | 3 | Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response. 4 | 5 | You'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /14-GPIOHandling/RPi4/GPIOHandling.ex-meta: -------------------------------------------------------------------------------- 1 | { "GPIO Handling (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPIO", "LED"], 4 | "Description" : "Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response.\r\n\r\nYou'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /14-GPIOHandling/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 14 GPIO Handling 2 | 3 | Another example demonstrating the peripherals available in Ultibo, this time using the GPIO to detect a switch being opened or closed and turning an LED on or off in response. 4 | 5 | You'll need a few components to try this example, an LED and a resistor plus some wire and a switch. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /15-MouseCursor/QEMU/MouseCursor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Mouse Cursor (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["Mouse", "Pointer"], 4 | "Description" : "A simple example of reading mouse movements and tracking the mouse pointer on the screen.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /15-MouseCursor/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 15 Mouse Cursor 2 | 3 | A simple example of reading mouse movements and tracking the mouse pointer on the screen. 4 | 5 | QEMU VersatilePB version 6 | -------------------------------------------------------------------------------- /15-MouseCursor/RPi/MouseCursor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Mouse Cursor (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Mouse", "Pointer"], 4 | "Description" : "A simple example of reading mouse movements and tracking the mouse pointer on the screen.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /15-MouseCursor/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 15 Mouse Cursor 2 | 3 | A simple example of reading mouse movements and tracking the mouse pointer on the screen. 4 | 5 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 6 | -------------------------------------------------------------------------------- /15-MouseCursor/RPi2/MouseCursor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Mouse Cursor (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Mouse", "Pointer"], 4 | "Description" : "A simple example of reading mouse movements and tracking the mouse pointer on the screen.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /15-MouseCursor/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 15 Mouse Cursor 2 | 3 | A simple example of reading mouse movements and tracking the mouse pointer on the screen. 4 | 5 | Raspberry Pi 2B version 6 | -------------------------------------------------------------------------------- /15-MouseCursor/RPi3/MouseCursor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Mouse Cursor (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Mouse", "Pointer"], 4 | "Description" : "A simple example of reading mouse movements and tracking the mouse pointer on the screen.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /15-MouseCursor/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 15 Mouse Cursor 2 | 3 | A simple example of reading mouse movements and tracking the mouse pointer on the screen. 4 | 5 | Raspberry Pi 3B/3B+/3A+/Zero2W version 6 | -------------------------------------------------------------------------------- /15-MouseCursor/RPi4/MouseCursor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Mouse Cursor (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Mouse", "Pointer"], 4 | "Description" : "A simple example of reading mouse movements and tracking the mouse pointer on the screen.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /15-MouseCursor/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 15 Mouse Cursor 2 | 3 | A simple example of reading mouse movements and tracking the mouse pointer on the screen. 4 | 5 | Raspberry Pi 4B/400 version 6 | -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi/BouncingBoxes.ex-meta: -------------------------------------------------------------------------------- 1 | { "Bouncing Boxes (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Graphics", "Animation", "Framebuffer"], 4 | "Description" : "An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration.\r\n\r\nThis example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 16 Bouncing Boxes 2 | 3 | An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration. 4 | 5 | This example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi2/BouncingBoxes.ex-meta: -------------------------------------------------------------------------------- 1 | { "Bouncing Boxes (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Graphics", "Animation", "Framebuffer"], 4 | "Description" : "An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration.\r\n\r\nThis example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 16 Bouncing Boxes 2 | 3 | An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration. 4 | 5 | This example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi3/BouncingBoxes.ex-meta: -------------------------------------------------------------------------------- 1 | { "Bouncing Boxes (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Graphics", "Animation", "Framebuffer"], 4 | "Description" : "An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration.\r\n\r\nThis example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 16 Bouncing Boxes 2 | 3 | An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration. 4 | 5 | This example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi4/BouncingBoxes.ex-meta: -------------------------------------------------------------------------------- 1 | { "Bouncing Boxes (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Graphics", "Animation", "Framebuffer"], 4 | "Description" : "An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration.\r\n\r\nThis example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /16-BouncingBoxes/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 16 Bouncing Boxes 2 | 3 | An example that demonstrates the use of the framebuffer device with a virtual width and height to allow multiple pages to be swapped in and out quickly. Using the framebuffer this way produces fast animation without hardware acceleration. 4 | 5 | This example has been ported to Ultibo from the excellent series of articles entitled 'Low-level Graphics on Raspberry Pi' published by Raspberry Compote, you can find the original articles here http://raspberrycompote.blogspot.com.au/2012/12/low-level-graphics-on-raspberry-pi-part_9509.html 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /17-TextEditor/QEMU/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /17-TextEditor/QEMU/README.txt: -------------------------------------------------------------------------------- 1 | Example 17 Text Editor 2 | 3 | This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo. 4 | 5 | QEMU VersatilePB version 6 | -------------------------------------------------------------------------------- /17-TextEditor/QEMU/TextEditor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Text Editor (QEMU)" : { 2 | "Category" : "Ultibo (QEMU)", 3 | "Keywords" : ["FreeVision", "Window"], 4 | "Description" : "This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo.\r\n\r\nQEMU VersatilePB version"} 5 | } -------------------------------------------------------------------------------- /17-TextEditor/QEMU/disk.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/17-TextEditor/QEMU/disk.img -------------------------------------------------------------------------------- /17-TextEditor/RPi/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /17-TextEditor/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 17 Text Editor 2 | 3 | This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo. 4 | 5 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 6 | 7 | -------------------------------------------------------------------------------- /17-TextEditor/RPi/TextEditor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Text Editor (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["FreeVision", "Window"], 4 | "Description" : "This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /17-TextEditor/RPi2/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /17-TextEditor/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 17 Text Editor 2 | 3 | This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo. 4 | 5 | Raspberry Pi 2B version 6 | -------------------------------------------------------------------------------- /17-TextEditor/RPi2/TextEditor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Text Editor (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["FreeVision", "Window"], 4 | "Description" : "This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /17-TextEditor/RPi3/QEMULauncher.ini: -------------------------------------------------------------------------------- 1 | [QEMULauncher] 2 | ExtraParams=-drive file=../QEMU/disk.img,if=sd,format=raw -------------------------------------------------------------------------------- /17-TextEditor/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 17 Text Editor 2 | 3 | This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo. 4 | 5 | Raspberry Pi 3B/3B+/3A+/Zero2W version 6 | -------------------------------------------------------------------------------- /17-TextEditor/RPi3/TextEditor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Text Editor (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["FreeVision", "Window"], 4 | "Description" : "This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /17-TextEditor/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 17 Text Editor 2 | 3 | This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo. 4 | 5 | Raspberry Pi 4B/400 version 6 | -------------------------------------------------------------------------------- /17-TextEditor/RPi4/TextEditor.ex-meta: -------------------------------------------------------------------------------- 1 | { "Text Editor (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["FreeVision", "Window"], 4 | "Description" : "This example uses the FreeVision text mode windowing package to create a simple multi window text editor. The project is based on the FreeVision testapp example included with FPC and modified to work under Ultibo.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /18-PWMControl/RPi/PWM Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/18-PWMControl/RPi/PWM Example.png -------------------------------------------------------------------------------- /18-PWMControl/RPi/PWMControl.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Control (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["LED", "Brightness"], 4 | "Description" : "An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness.\r\n\r\nYou'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /18-PWMControl/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 18 PWM Control 2 | 3 | An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness. 4 | 5 | You'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /18-PWMControl/RPi2/PWM Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/18-PWMControl/RPi2/PWM Example.png -------------------------------------------------------------------------------- /18-PWMControl/RPi2/PWMControl.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Control (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["LED", "Brightness"], 4 | "Description" : "An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness.\r\n\r\nYou'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /18-PWMControl/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 18 PWM Control 2 | 3 | An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness. 4 | 5 | You'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /18-PWMControl/RPi3/PWM Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/18-PWMControl/RPi3/PWM Example.png -------------------------------------------------------------------------------- /18-PWMControl/RPi3/PWMControl.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Control (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["LED", "Brightness"], 4 | "Description" : "An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness.\r\n\r\nYou'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /18-PWMControl/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 18 PWM Control 2 | 3 | An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness. 4 | 5 | You'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /18-PWMControl/RPi4/PWM Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/18-PWMControl/RPi4/PWM Example.png -------------------------------------------------------------------------------- /18-PWMControl/RPi4/PWMControl.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Control (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["LED", "Brightness"], 4 | "Description" : "An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness.\r\n\r\nYou'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /18-PWMControl/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 18 PWM Control 2 | 3 | An example demonstrating how to use PWM devices in Ultibo, we cycle a pair of LEDs from fully off to fully on with a gradually increasing brightness. 4 | 5 | You'll need a couple of LEDs and a pair of resistors plus some wire to try out this example. Also recommended would be a breadboard or breakout board connected to the Raspberry Pi GPIO header to avoid the possibility of accidentally damaging the Pi. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /19-SenseHAT/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 19 SenseHAT 2 | 3 | Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT. 4 | 5 | Note: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays 6 | folder is also present and add the following line to the config.txt file in the root directory: 7 | 8 | dtoverlay=rpi-sense 9 | 10 | or alternatively disable device tree loading by adding the following line to the config.txt file: 11 | 12 | device_tree= 13 | 14 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 15 | -------------------------------------------------------------------------------- /19-SenseHAT/RPi/SenseHAT.ex-meta: -------------------------------------------------------------------------------- 1 | { "SenseHAT (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["LED", "Matrix", "Joystick"], 4 | "Description" : "Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT.\r\n\r\nNote: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays\r\n\r\n folder is also present and add the following line to the config.txt file in the root directory:\r\n\r\ndtoverlay=rpi-sense\r\n\r\n or alternatively disable device tree loading by adding the following line to the config.txt file:\r\n\r\ndevice_tree=\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /19-SenseHAT/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 19 SenseHAT 2 | 3 | Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT. 4 | 5 | Note: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays 6 | folder is also present and add the following line to the config.txt file in the root directory: 7 | 8 | dtoverlay=rpi-sense 9 | 10 | or alternatively disable device tree loading by adding the following line to the config.txt file: 11 | 12 | device_tree= 13 | 14 | Raspberry Pi 2B version 15 | -------------------------------------------------------------------------------- /19-SenseHAT/RPi2/SenseHAT.ex-meta: -------------------------------------------------------------------------------- 1 | { "SenseHAT (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["LED", "Matrix", "Joystick"], 4 | "Description" : "Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT.\r\n\r\nNote: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays\r\n\r\n folder is also present and add the following line to the config.txt file in the root directory:\r\n\r\ndtoverlay=rpi-sense\r\n\r\n or alternatively disable device tree loading by adding the following line to the config.txt file:\r\n\r\ndevice_tree=\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /19-SenseHAT/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 19 SenseHAT 2 | 3 | Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT. 4 | 5 | Note: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays 6 | folder is also present and add the following line to the config.txt file in the root directory: 7 | 8 | dtoverlay=rpi-sense 9 | 10 | or alternatively disable device tree loading by adding the following line to the config.txt file: 11 | 12 | device_tree= 13 | 14 | Raspberry Pi 3B/3B+/3A+/Zero2W version 15 | -------------------------------------------------------------------------------- /19-SenseHAT/RPi3/SenseHAT.ex-meta: -------------------------------------------------------------------------------- 1 | { "SenseHAT (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["LED", "Matrix", "Joystick"], 4 | "Description" : "Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT.\r\n\r\nNote: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays\r\n\r\n folder is also present and add the following line to the config.txt file in the root directory:\r\n\r\ndtoverlay=rpi-sense\r\n\r\n or alternatively disable device tree loading by adding the following line to the config.txt file:\r\n\r\ndevice_tree=\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /19-SenseHAT/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 19 SenseHAT 2 | 3 | Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT. 4 | 5 | Note: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays 6 | folder is also present and add the following line to the config.txt file in the root directory: 7 | 8 | dtoverlay=rpi-sense 9 | 10 | or alternatively disable device tree loading by adding the following line to the config.txt file: 11 | 12 | device_tree= 13 | 14 | Raspberry Pi 4B/400 version 15 | -------------------------------------------------------------------------------- /19-SenseHAT/RPi4/SenseHAT.ex-meta: -------------------------------------------------------------------------------- 1 | { "SenseHAT (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["LED", "Matrix", "Joystick"], 4 | "Description" : "Reading the joystick and displaying text on the 8x8 LED matrix of the Raspberry Pi SenseHAT.\r\n\r\nNote: If the device tree files (*.dtb) are present on your SD card then you must ensure the overlays\r\n\r\n folder is also present and add the following line to the config.txt file in the root directory:\r\n\r\ndtoverlay=rpi-sense\r\n\r\n or alternatively disable device tree loading by adding the following line to the config.txt file:\r\n\r\ndevice_tree=\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /20-PWMSound/RPi/PWMSound.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Sound (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["Audio", "PCM", "DMA"], 4 | "Description" : "An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA.\r\n\r\nYou'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /20-PWMSound/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 20 PWM Sound 2 | 3 | An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA. 4 | 5 | You'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /20-PWMSound/RPi2/PWMSound.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Sound (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Audio", "PCM", "DMA"], 4 | "Description" : "An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA.\r\n\r\nYou'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi.\r\n\r\nRaspberry Pi 2B version"} 5 | } -------------------------------------------------------------------------------- /20-PWMSound/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Example 20 PWM Sound 2 | 3 | An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA. 4 | 5 | You'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi. 6 | 7 | Raspberry Pi 2B version 8 | -------------------------------------------------------------------------------- /20-PWMSound/RPi3/PWMSound.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Sound (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Audio", "PCM", "DMA"], 4 | "Description" : "An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA.\r\n\r\nYou'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /20-PWMSound/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 20 PWM Sound 2 | 3 | An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA. 4 | 5 | You'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /20-PWMSound/RPi4/PWMSound.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM Sound (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Audio", "PCM", "DMA"], 4 | "Description" : "An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA.\r\n\r\nYou'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /20-PWMSound/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 20 PWM Sound 2 | 3 | An example demonstrating how to use the PWM devices to play audio in Ultibo, we load a raw PCM files from the SD card, decode it and play it using DMA. 4 | 5 | You'll need an audio playback device such as an amplifier, TV or headphones connected to the audio jack on your Raspberry Pi. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /20-PWMSound/a2002011001-e02.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/20-PWMSound/a2002011001-e02.pcm -------------------------------------------------------------------------------- /21-JoystickGamepad/RPi/JoystickGamepad.ex-meta: -------------------------------------------------------------------------------- 1 | { "Joystick Gamepad (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["HID", "Joystick"], 4 | "Description" : "An example showing how to use the Joystick unit and the HID Joystick consumer, use the joystick or gamepad to move the cross around the screen and press the buttons to draw colored circles.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /21-JoystickGamepad/RPi/README.txt: -------------------------------------------------------------------------------- 1 | Example 21 Joystick Gamepad 2 | 3 | An example showing how to use the Joystick unit and the HID Joystick consumer, use the joystick or gamepad to move the cross around the screen and press the buttons to draw colored circles. 4 | 5 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 6 | -------------------------------------------------------------------------------- /21-JoystickGamepad/RPi3/JoystickGamepad.ex-meta: -------------------------------------------------------------------------------- 1 | { "Joystick Gamepad (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["HID", "Joystick"], 4 | "Description" : "An example showing how to use the Joystick unit and the HID Joystick consumer, use the joystick or gamepad to move the cross around the screen and press the buttons to draw colored circles.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /21-JoystickGamepad/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Example 21 Joystick Gamepad 2 | 3 | An example showing how to use the Joystick unit and the HID Joystick consumer, use the joystick or gamepad to move the cross around the screen and press the buttons to draw colored circles. 4 | 5 | Raspberry Pi 3B/3B+/3A+/Zero2W version 6 | -------------------------------------------------------------------------------- /21-JoystickGamepad/RPi4/JoystickGamepad.ex-meta: -------------------------------------------------------------------------------- 1 | { "Joystick Gamepad (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["HID", "Joystick"], 4 | "Description" : "An example showing how to use the Joystick unit and the HID Joystick consumer, use the joystick or gamepad to move the cross around the screen and press the buttons to draw colored circles.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /21-JoystickGamepad/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Example 21 Joystick Gamepad 2 | 3 | An example showing how to use the Joystick unit and the HID Joystick consumer, use the joystick or gamepad to move the cross around the screen and press the buttons to draw colored circles. 4 | 5 | Raspberry Pi 4B/400 version 6 | -------------------------------------------------------------------------------- /Advanced/DedicatedCPU/RPi2/DedicatedCPU.ex-meta: -------------------------------------------------------------------------------- 1 | { "Dedicated CPU (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["CPU", "Real time"], 4 | "Description" : "This example shows how to take control of a CPU in Ultibo core and use it as a high speed micro controller doing real time operations.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version. There is, of course, no Raspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /Advanced/DedicatedCPU/RPi2/InitUnit.pas: -------------------------------------------------------------------------------- 1 | unit InitUnit; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | { Advanced example - Dedicated CPU } 6 | { } 7 | { This file is used during initialization of the program and allows us to make } 8 | { some changes to the startup behaviour so that we prevent certain threads from} 9 | { being assigned to our dedicated CPU. You can try commenting this out to see } 10 | { the affect on the behavior, see the comments in the ThreadUnit for more info } 11 | 12 | interface 13 | 14 | uses 15 | GlobalConst, 16 | Threads; 17 | 18 | implementation 19 | 20 | initialization 21 | {Disable thread allocation for CPU 3} 22 | SchedulerAllocationDisable(CPU_ID_3); 23 | end. 24 | -------------------------------------------------------------------------------- /Advanced/DedicatedCPU/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - Dedicated CPU 2 | 3 | This example shows how to take control of a CPU in Ultibo core and use it as a high speed micro controller doing real time operations. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version. There is, of course, no Raspberry Pi A/B/A+/B+/Zero/ZeroW version 6 | -------------------------------------------------------------------------------- /Advanced/DedicatedCPU/RPi4/DedicatedCPU.ex-meta: -------------------------------------------------------------------------------- 1 | { "Dedicated CPU (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["CPU", "Real time"], 4 | "Description" : "This example shows how to take control of a CPU in Ultibo core and use it as a high speed micro controller doing real time operations.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /Advanced/DedicatedCPU/RPi4/InitUnit.pas: -------------------------------------------------------------------------------- 1 | unit InitUnit; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | { Advanced example - Dedicated CPU } 6 | { } 7 | { This file is used during initialization of the program and allows us to make } 8 | { some changes to the startup behaviour so that we prevent certain threads from} 9 | { being assigned to our dedicated CPU. You can try commenting this out to see } 10 | { the affect on the behavior, see the comments in the ThreadUnit for more info } 11 | 12 | interface 13 | 14 | uses 15 | GlobalConst, 16 | Threads; 17 | 18 | implementation 19 | 20 | initialization 21 | {Disable thread allocation for CPU 3} 22 | SchedulerAllocationDisable(CPU_ID_3); 23 | end. 24 | -------------------------------------------------------------------------------- /Advanced/DedicatedCPU/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - Dedicated CPU 2 | 3 | This example shows how to take control of a CPU in Ultibo core and use it as a high speed micro controller doing real time operations. 4 | 5 | Raspberry Pi 4B/40 version. 6 | -------------------------------------------------------------------------------- /Advanced/GPUMouse/RPi2/GPUMouse.ex-meta: -------------------------------------------------------------------------------- 1 | { "GPU Mouse (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "Mouse", "Cursor"], 4 | "Description" : "An example of creating a mouse cursor image and tracking the mouse pointer on the screen. Also introduces detecting the Pi model and communicating with the GPU.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero."} 5 | } -------------------------------------------------------------------------------- /Advanced/GPUMouse/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - GPU Mouse 2 | 3 | An example of creating a mouse cursor image and tracking the mouse pointer on the screen. Also introduces detecting the Pi model and communicating with the GPU. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero. 6 | -------------------------------------------------------------------------------- /Advanced/GPUMouse/RPi4/GPUMouse.ex-meta: -------------------------------------------------------------------------------- 1 | { "GPU Mouse (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "Mouse", "Cursor"], 4 | "Description" : "An example of creating a mouse cursor image and tracking the mouse pointer on the screen. Also introduces detecting the Pi model and communicating with the GPU.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /Advanced/GPUMouse/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - GPU Mouse 2 | 3 | An example of creating a mouse cursor image and tracking the mouse pointer on the screen. Also introduces detecting the Pi model and communicating with the GPU. 4 | 5 | Raspberry Pi 4B/400 version. 6 | -------------------------------------------------------------------------------- /Advanced/PWMPCM/RPi3/PWMPCM.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM PCM (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["Audio", "PCM", "FIFO"], 4 | "Description" : "An example of playing a PCM sound sample using the PWM device, unlike Example 20 which uses DMA to play the sound this example feeds the audio samples directly into the FIFO buffer. See the project header for more information.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version, copy the code to a new project and modify where noted to create a version for A/B/A+/B+/Zero/ZeroW/2B"} 5 | } -------------------------------------------------------------------------------- /Advanced/PWMPCM/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - PWM PCM 2 | 3 | An example of playing a PCM sound sample using the PWM device, unlike Example 20 which uses DMA to play the sound this example feeds the audio samples directly into the FIFO buffer. See the project header for more information. 4 | 5 | Raspberry Pi 3B/3B+/3A+/Zero2W version, copy the code to a new project and modify where noted to create a version for A/B/A+/B+/Zero/ZeroW/2B. 6 | -------------------------------------------------------------------------------- /Advanced/PWMPCM/RPi3/a2002011001-e02-8kHz.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/Advanced/PWMPCM/RPi3/a2002011001-e02-8kHz.pcm -------------------------------------------------------------------------------- /Advanced/PWMPCM/RPi4/PWMPCM.ex-meta: -------------------------------------------------------------------------------- 1 | { "PWM PCM (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Audio", "PCM", "FIFO"], 4 | "Description" : "An example of playing a PCM sound sample using the PWM device, unlike Example 20 which uses DMA to play the sound this example feeds the audio samples directly into the FIFO buffer. See the project header for more information.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /Advanced/PWMPCM/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - PWM PCM 2 | 3 | An example of playing a PCM sound sample using the PWM device, unlike Example 20 which uses DMA to play the sound this example feeds the audio samples directly into the FIFO buffer. See the project header for more information. 4 | 5 | Raspberry Pi 4B/400 version. 6 | -------------------------------------------------------------------------------- /Advanced/PWMPCM/RPi4/a2002011001-e02-8kHz.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/Advanced/PWMPCM/RPi4/a2002011001-e02-8kHz.pcm -------------------------------------------------------------------------------- /Advanced/RAMDisk/RPi2/RAMDisk.ex-meta: -------------------------------------------------------------------------------- 1 | { "RAM Disk (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Virtual", "Format", "Partition"], 4 | "Description" : "This example shows how to use some of the advanced features of the file system to create and manage virtual disk devices as well as partitioning and formatting disks.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW"} 5 | } -------------------------------------------------------------------------------- /Advanced/RAMDisk/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - RAM Disk 2 | 3 | This example shows how to use some of the advanced features of the file system to create and manage virtual disk devices as well as partitioning and formatting disks. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW. 6 | -------------------------------------------------------------------------------- /Advanced/RAMDisk/RPi4/RAMDisk.ex-meta: -------------------------------------------------------------------------------- 1 | { "RAM Disk (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["Virtual", "Format", "Partition"], 4 | "Description" : "This example shows how to use some of the advanced features of the file system to create and manage virtual disk devices as well as partitioning and formatting disks.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /Advanced/RAMDisk/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - RAM Disk 2 | 3 | This example shows how to use some of the advanced features of the file system to create and manage virtual disk devices as well as partitioning and formatting disks. 4 | 5 | Raspberry Pi 4B/400 version. 6 | -------------------------------------------------------------------------------- /Advanced/README.md: -------------------------------------------------------------------------------- 1 | ## Ultibo advanced examples 2 | 3 | This folder contains a series of more advanced examples covering topics that you may find interesting or have been asked about in the Ultibo forums. 4 | 5 | They are not in any particular order, simply select the examples that are interesting to you and open them. 6 | 7 | These examples are included in the Ultibo core installer download and can be found from the Lazarus IDE by selecting Tools, Example Projects.. from the menu. 8 | 9 | ## Advanced examples included: 10 | 11 | * RAMDisk - How to create, mount and format a RAM disk ready for use. Also covers partitioning and formatting any disk. 12 | 13 | * UDPServer - Creating a simple SysLog server using the WinsockUDPListener class from Winsock2 14 | 15 | * Sensormatic3000 - An imaginary data logging sensor that demonstrates a number of Ultibo features. Created for our presentation to the ADUG 2016 Symposium. 16 | 17 | * DedicatedCPU - How to take control of a CPU in Ultibo core and use it as a high speed micro controller for real time operations. 18 | 19 | * GPUMouse - Creating and manipulating a mouse cursor using the GPU functions. 20 | 21 | * PWMPCM - Playing a PCM audio sample by directly writing to the FIFO of the PWM devices. -------------------------------------------------------------------------------- /Advanced/Sensormatic3000/RPi2/InitUnit.pas: -------------------------------------------------------------------------------- 1 | unit InitUnit; 2 | 3 | {$mode delphi}{$H+} 4 | 5 | { The init unit uses a technique also shown in other examples where it gets to } 6 | { be included in the Initialization/Finalization chain before many other units } 7 | { and can adjust certain defaults and settings before the other units start. } 8 | { } 9 | { In fact the init unit can actually be started prior to just about everything } 10 | { except the platform, threads and heap manager. } 11 | 12 | interface 13 | 14 | uses 15 | {We shouldn't include much here} 16 | GlobalConfig, 17 | GlobalConst; 18 | 19 | 20 | implementation 21 | 22 | 23 | initialization 24 | {Disable SysLog Logging} 25 | SYSLOG_REGISTER_LOGGING:=False; 26 | 27 | {Enable Serial Logging} 28 | SERIAL_REGISTER_LOGGING:=True; 29 | SERIAL_LOGGING_DEFAULT:=True; 30 | 31 | {Setup Default Colors} 32 | WINDOW_DEFAULT_FORECOLOR:=COLOR_WHITE; 33 | WINDOW_DEFAULT_BACKCOLOR:=COLOR_BLACK; 34 | 35 | {Disable Console Shell} 36 | CONSOLE_SHELL_ENABLED:=False; 37 | 38 | end. 39 | 40 | -------------------------------------------------------------------------------- /Advanced/Sensormatic3000/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - Sensormatic 3000 2 | 3 | An example of a "real world" application which reads data from an imaginary sensor, stores it into memory and uses that data to display a graph on the screen as well as providing the same graph via a web page. 4 | 5 | This example shows the use of a range of features and techniques including threads, classes, date and time, text and graphics console windows, dynamic web content and logging. 6 | 7 | Originally created for our presentation to the Australian Delphi User Group (ADUG) 2016 Symposium held in Sydney and Melbourne. 8 | 9 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW. 10 | 11 | -------------------------------------------------------------------------------- /Advanced/Sensormatic3000/RPi2/Sensormatic3000.ex-meta: -------------------------------------------------------------------------------- 1 | { "Sensormatic 3000 (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Sensors", "Graphing"], 4 | "Description" : "An example of a \"real world\" application which reads data from an imaginary sensor, stores it into memory and uses that data to display a graph on the screen as well as providing the same graph via a web page. \r\n\r\nThis example shows the use of a range of features and techniques including threads, classes, date and time, text and graphics console windows, dynamic web content and logging. \r\n\r\nOriginally created for our presentation to the Australian Delphi User Group (ADUG) 2016 Symposium held in Sydney and Melbourne.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW."} 5 | } -------------------------------------------------------------------------------- /Advanced/UDPServer/RPi2/InitUnit.pas: -------------------------------------------------------------------------------- 1 | unit InitUnit; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | { Advanced example - UDP Server } 6 | { } 7 | { This file is used during initialization of the program and allows us to make } 8 | { some changes to the startup behaviour so the built in SysLog client will send} 9 | { all logging entries to our example SysLog server. } 10 | 11 | interface 12 | 13 | uses 14 | GlobalConst, 15 | GlobalConfig; 16 | 17 | implementation 18 | 19 | initialization 20 | {Disable File Logging} 21 | FILESYS_REGISTER_LOGGING:=False; 22 | FILESYS_LOGGING_DEFAULT:=False; 23 | 24 | {Disable Serial Logging} 25 | SERIAL_REGISTER_LOGGING:=False; 26 | SERIAL_LOGGING_DEFAULT:=False; 27 | 28 | {Disable Console Logging} 29 | CONSOLE_REGISTER_LOGGING:=False; 30 | CONSOLE_LOGGING_DEFAULT:=False; 31 | 32 | {Configure SysLog Client} 33 | {Make sure SysLog will start automatically} 34 | SYSLOG_AUTOSTART:=True; 35 | 36 | {Make sure SysLog registers as a logging device} 37 | SYSLOG_REGISTER_LOGGING:=True; 38 | 39 | {And make sure it is the default} 40 | SYSLOG_LOGGING_DEFAULT:=True; 41 | 42 | {Set SysLog to send logs to our UDP server} 43 | SYSLOG_SERVER_DEFAULT:='127.0.0.1'; 44 | SYSLOG_PORT_DEFAULT:=514; 45 | SYSLOG_PROTOCOL_DEFAULT:=LOGGING_PROTOCOL_UDP; 46 | end. 47 | 48 | -------------------------------------------------------------------------------- /Advanced/UDPServer/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Advanced example - UDP Server 2 | 3 | An example of how to use the WinsockUDPListener class to create a threaded UDP server using the SysLog protocol as a demonstration. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW. 6 | 7 | -------------------------------------------------------------------------------- /Advanced/UDPServer/RPi2/UDPServer.ex-meta: -------------------------------------------------------------------------------- 1 | { "UDP Server (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Winsock", "UDP", "Listener", "SysLog"], 4 | "Description" : "An example of how to use the WinsockUDPListener class to create a threaded UDP server using the SysLog protocol as a demonstration.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW"} 5 | } -------------------------------------------------------------------------------- /Advanced/UDPServer/RPi2/UDPServer.lpr: -------------------------------------------------------------------------------- 1 | program UDPServer; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | { Advanced example - UDP Server } 6 | { } 7 | { This example looks at using the TWinsock2UDPListener class in the Winsock2 } 8 | { unit to create a multithreaded UDP server. For the purpose of this example } 9 | { we create a very basic SysLog server and set our own logging to be sent to } 10 | { it. } 11 | { } 12 | { Most of the functionality for this example is contained in the ServerUnit.pas} 13 | { file rather than the program file itself. Open ServerUnit to follow what is } 14 | { happening with our UDP server. } 15 | { } 16 | { This version is for Raspberry Pi 2B and will also work on a 3B/3B+/3A+/Zero2W} 17 | { To create a version for the A/B/A+/B+/Zero or for the 4B/400 simply create a } 18 | { new project, copy this code into it and modify as required. } 19 | 20 | uses 21 | InitUnit, {Include InitUnit to allow us to change the startup behaviour} 22 | RaspberryPi2, {Include RaspberryPi2 to make sure all standard functions are included} 23 | Threads, 24 | ServerUnit; {Include ServerUnit which contains the main code for our server} 25 | 26 | begin 27 | {Like most typical Free Pascal applications, the program file itself doesn't 28 | contain very much. All we do here is some initialization and call the start 29 | function in the ServerUnit. Switch over to there to see what is happening} 30 | 31 | {Initialize our UDP Server} 32 | ServerInit; 33 | 34 | {Start our UDP Server} 35 | ServerStart; 36 | 37 | {Halt the thread if we return} 38 | ThreadHalt(0); 39 | end. 40 | -------------------------------------------------------------------------------- /Contributed/MouseDrawing/RPi2/MouseDrawing.ex-meta: -------------------------------------------------------------------------------- 1 | { "Mouse Drawing (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["Mouse", "Graphics", "Drawing"], 4 | "Description" : "An combination of example 3 and example 15 to create a very simple drawing program.\r\n\r\nContributed by Mgreim 03.JUL.2016\r\n\r\nOriginal source: https://github.com/MGreim/ultibomousegraphicdemo\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW"} 5 | } -------------------------------------------------------------------------------- /Contributed/MouseDrawing/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | Contributed example - Mouse Drawing 2 | 3 | An combination of example 3 and example 15 to create a very simple drawing program. 4 | 5 | Contributed by Mgreim 03.JUL.2016 6 | 7 | Original source: https://github.com/MGreim/ultibomousegraphicdemo 8 | 9 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/ZeroW. 10 | 11 | -------------------------------------------------------------------------------- /Synapse/FTPServ/RPi2/ftpmain.pas: -------------------------------------------------------------------------------- 1 | unit ftpmain; 2 | 3 | {$IFDEF FPC} 4 | {$mode delphi} 5 | {$endif} 6 | 7 | interface 8 | 9 | uses 10 | {$IFDEF LINUX} 11 | Libc, 12 | {$ELSE} 13 | {$IFDEF ULTIBO} 14 | Platform, Threads, Ultibo, 15 | {$ELSE} 16 | Windows, 17 | {$ENDIF} 18 | {$ENDIF} 19 | Classes, SysUtils, ftpthrd, blcksock, synsock; 20 | 21 | type 22 | TServiceThread = class(TThread) 23 | private 24 | { Private declarations } 25 | protected 26 | procedure Execute; override; 27 | public 28 | constructor Create; 29 | end; 30 | 31 | 32 | implementation 33 | 34 | {==============================================================================} 35 | { TServiceThread } 36 | 37 | constructor TServiceThread.create; 38 | begin 39 | inherited create(false); 40 | FreeOnTerminate := false; 41 | // Priority := tpNormal; 42 | end; 43 | 44 | procedure TServiceThread.Execute; 45 | var 46 | ClientSock: TSocket; 47 | sock: TTCPBlockSocket; 48 | begin 49 | ThreadSetName(GetCurrentThreadID,'FTP Listener Thread'); 50 | 51 | sock := TTCPBlockSocket.Create; 52 | try 53 | sock.bind('0.0.0.0','21'); 54 | sock.setLinger(true, 10000); 55 | sock.listen; 56 | if sock.LastError <> 0 then 57 | exit; 58 | while not terminated do 59 | begin 60 | if sock.canread(1000) then 61 | begin 62 | ClientSock := sock.accept; 63 | if sock. lastError = 0 then 64 | TFtpServerThread.create(ClientSock); 65 | end; 66 | end; 67 | finally 68 | sock.Free; 69 | end; 70 | end; 71 | 72 | {==============================================================================} 73 | end. 74 | -------------------------------------------------------------------------------- /Synapse/README.md: -------------------------------------------------------------------------------- 1 | ## Ultibo Synapse examples 2 | 3 | This folder contains a number of examples showing how to use the Synapse sockets library with Ultibo. 4 | 5 | These examples are also included in the Synapse download and can be found in the `\source\demo` folder. 6 | 7 | ### Synapse examples: 8 | 9 | * EchoDaemon - A very simple TCP echo deamon using a listener thread and multiple server threads. 10 | 11 | * FTPServ - A simple FTP server example using a listener thread and multiple server threads. 12 | 13 | * HTTPProxy - Using Synapse to create a HTTP proxy on port 3128. 14 | 15 | * HTTPServ - Using Synapse to create a HTTP server on port 80. 16 | 17 | * Scan - A multithreaded ping scan example. 18 | 19 | * SendMail - A example of using Synapse to send an email message. 20 | 21 | * SerialEcho - An example that reads characters from the serial port and echos them back. 22 | 23 | * SNMPServ - A UDP example that creates a SNMP (Simple Network Management Protocol server. 24 | 25 | * SNTP - An SNTP (Simple Network Time Protocol) client example. 26 | 27 | * TFTPServer - A TFTP (Trivial File Transfer Protocol) server example. 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Synapse/Scan/RPi2/IPUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/Synapse/Scan/RPi2/IPUtils.pas -------------------------------------------------------------------------------- /Synapse/Scan/RPi2/PingThread.pas: -------------------------------------------------------------------------------- 1 | unit PingThread; 2 | 3 | {$IFDEF FPC} 4 | {$mode delphi} 5 | {$endif} 6 | 7 | interface 8 | 9 | uses Classes, PingSend, IPUtils{$IFDEF ULTIBO}, GlobalConst, GlobalConfig{$ENDIF}; 10 | 11 | type 12 | PPingResult = ^TPingResult; 13 | TPingResult = Record 14 | IPAddress:String; 15 | Exists:Boolean; 16 | end; 17 | 18 | 19 | type 20 | TPingThread = class(TThread) 21 | private 22 | { Private declarations } 23 | protected 24 | procedure Execute; override; 25 | public 26 | PingResult:TPingResult; 27 | Ready:Boolean; 28 | constructor Create(Ping:TPingResult); 29 | end; 30 | 31 | implementation 32 | 33 | { TPingThread } 34 | 35 | constructor TPingThread.Create(Ping:TPingResult); 36 | begin 37 | PingResult.IPAddress := Ping.IPAddress; 38 | inherited Create(False{$IFDEF ULTIBO},SIZE_128K{$ENDIF}); 39 | end; 40 | 41 | procedure TPingThread.Execute; 42 | var 43 | Ping:TPingSend; 44 | begin 45 | Ready := false; 46 | Ping := TPingSend.Create; 47 | Ping.Timeout := 2000; 48 | PingResult.Exists := Ping.Ping(PingResult.IPAddress); 49 | Ping.Free; 50 | Ready := true; 51 | end; 52 | 53 | end. 54 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi/HelloAudio.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Audio (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "HDMI", "Audio"], 4 | "Description" : "A very simple example showing audio output over HDMI.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Audio 2 | 3 | A very simple example showing audio output over HDMI. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi/libhello_audio.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloAudio/RPi/libhello_audio.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi2/HelloAudio.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Audio (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "HDMI", "Audio"], 4 | "Description" : "A very simple example showing audio output over HDMI.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Audio 2 | 3 | A very simple example showing audio output over HDMI. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi2/libhello_audio.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloAudio/RPi2/libhello_audio.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi4/HelloAudio.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Audio (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "HDMI", "Audio"], 4 | "Description" : "A very simple example showing audio output over HDMI.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Audio 2 | 3 | A very simple example showing audio output over HDMI. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloAudio/RPi4/libhello_audio.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloAudio/RPi4/libhello_audio.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi/HelloDispmanX.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello DispmanX (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "DispmanX", "Window"], 4 | "Description" : "The basics of creating a DispmanX window and displaying graphics on top of the existing framebuffer.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello DispmanX 2 | 3 | The basics of creating a DispmanX window and displaying graphics on top of the existing framebuffer. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi/libhello_dispmanx.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloDispmanX/RPi/libhello_dispmanx.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi2/HelloDispmanX.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello DispmanX (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "DispmanX", "Window"], 4 | "Description" : "The basics of creating a DispmanX window and displaying graphics on top of the existing framebuffer.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello DispmanX 2 | 3 | The basics of creating a DispmanX window and displaying graphics on top of the existing framebuffer. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi2/libhello_dispmanx.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloDispmanX/RPi2/libhello_dispmanx.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi4/HelloDispmanX.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello DispmanX (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "DispmanX", "Window"], 4 | "Description" : "The basics of creating a DispmanX window and displaying graphics on top of the existing framebuffer.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello DispmanX 2 | 3 | The basics of creating a DispmanX window and displaying graphics on top of the existing framebuffer. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloDispmanX/RPi4/libhello_dispmanx.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloDispmanX/RPi4/libhello_dispmanx.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi/HelloEncode.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Encode (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "OMX", "Video"], 4 | "Description" : "Using the OpenMAX API to encode a small piece of generated video.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Encode 2 | 3 | Using the OpenMAX API to encode a small piece of generated video. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi/libhello_encode.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloEncode/RPi/libhello_encode.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi2/HelloEncode.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Encode (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OMX", "Video"], 4 | "Description" : "Using the OpenMAX API to encode a small piece of generated video.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Encode 2 | 3 | Using the OpenMAX API to encode a small piece of generated video. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi2/libhello_encode.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloEncode/RPi2/libhello_encode.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi4/HelloEncode.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Encode (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "OMX", "Video"], 4 | "Description" : "Using the OpenMAX API to encode a small piece of generated video.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Encode 2 | 3 | Using the OpenMAX API to encode a small piece of generated video. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloEncode/RPi4/libhello_encode.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloEncode/RPi4/libhello_encode.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi/Beetroot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloJPEG/RPi/Beetroot.jpg -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi/HelloJPEG.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello JPEG (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "JPEG"], 4 | "Description" : "Decoding a JPEG using the hardware JPEG decoder (note that this example is a decoder only and does not display the picture).\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the Beetroot.jpg file from this folder to your SD card.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello JPEG 2 | 3 | Decoding a JPEG using the hardware JPEG decoder (note that this example is a decoder only and does not display the picture). 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the Beetroot.jpg file from this folder to your SD card. 8 | 9 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi/libhello_jpeg.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloJPEG/RPi/libhello_jpeg.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi2/Beetroot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloJPEG/RPi2/Beetroot.jpg -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi2/HelloJPEG.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello JPEG (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "JPEG"], 4 | "Description" : "Decoding a JPEG using the hardware JPEG decoder (note that this example is a decoder only and does not display the picture).\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the Beetroot.jpg file from this folder to your SD card.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello JPEG 2 | 3 | Decoding a JPEG using the hardware JPEG decoder (note that this example is a decoder only and does not display the picture). 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the Beetroot.jpg file from this folder to your SD card. 8 | 9 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloJPEG/RPi2/libhello_jpeg.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloJPEG/RPi2/libhello_jpeg.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi/HelloMMALEncode.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello MMAL Encode (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "MMAL", "PNG", "JPEG", "GIF", "BMP"], 4 | "Description" : "Using the Multimedia Abstration Layer (MMAL) to encode a test pattern of vertical stripes into multiple different image formats (PNG, JPEG, GIF and Bitmap).\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello MMAL Encode 2 | 3 | Using the Multimedia Abstration Layer (MMAL) to encode a test pattern of vertical stripes into multiple different image formats (PNG, JPEG, GIF and Bitmap). 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi/libhello_mmal_encode.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloMMALEncode/RPi/libhello_mmal_encode.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi2/HelloMMALEncode.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello MMAL Encode (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "MMAL", "PNG", "JPEG", "GIF", "BMP"], 4 | "Description" : "Using the Multimedia Abstration Layer (MMAL) to encode a test pattern of vertical stripes into multiple different image formats (PNG, JPEG, GIF and Bitmap).\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello MMAL Encode 2 | 3 | Using the Multimedia Abstration Layer (MMAL) to encode a test pattern of vertical stripes into multiple different image formats (PNG, JPEG, GIF and Bitmap). 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi2/libhello_mmal_encode.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloMMALEncode/RPi2/libhello_mmal_encode.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi4/HelloMMALEncode.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello MMAL Encode (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "MMAL", "PNG", "JPEG", "GIF", "BMP"], 4 | "Description" : "Using the Multimedia Abstration Layer (MMAL) to encode a test pattern of vertical stripes into multiple different image formats (PNG, JPEG, GIF and Bitmap).\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello MMAL Encode 2 | 3 | Using the Multimedia Abstration Layer (MMAL) to encode a test pattern of vertical stripes into multiple different image formats (PNG, JPEG, GIF and Bitmap). 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 4B/400 version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloMMALEncode/RPi4/libhello_mmal_encode.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloMMALEncode/RPi4/libhello_mmal_encode.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTeapot/RPi/HelloTeapot.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Teapot (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "MMAL", "OpenGLES"], 4 | "Description" : "Using OpenGL ES and MMAL to show what the Raspberry Pi can do, if you haven't seen it before you should be impressed.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the teapot.obj.dat and test.h264 files from the Media folder to your SD card.\r\n\r\nNote: You must include the following setting in a config.txt file in the root directory of the SD card for this example:\r\n\r\ngpu_mem=128\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTeapot/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Teapot 2 | 3 | Using OpenGL ES and MMAL to show what the Raspberry Pi can do, if you haven't seen it before you should be impressed. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the teapot.obj.dat and test.h264 files from the Media folder to your SD card. 8 | 9 | Note: You must include the following setting in a config.txt file in the root directory of the SD card for this example: 10 | 11 | gpu_mem=128 12 | 13 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 14 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTeapot/RPi/libhello_teapot.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTeapot/RPi/libhello_teapot.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTeapot/RPi2/HelloTeapot.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Teapot (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "MMAL", "OpenGLES"], 4 | "Description" : "Using OpenGL ES and MMAL to show what the Raspberry Pi can do, if you haven't seen it before you should be impressed.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the teapot.obj.dat and test.h264 files from the Media folder to your SD card.\r\n\r\nNote: You must include the following setting in a config.txt file in the root directory of the SD card for this example:\r\n\r\ngpu_mem=128\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTeapot/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Teapot 2 | 3 | Using OpenGL ES and MMAL to show what the Raspberry Pi can do, if you haven't seen it before you should be impressed. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the teapot.obj.dat and test.h264 files from the Media folder to your SD card. 8 | 9 | Note: You must include the following setting in a config.txt file in the root directory of the SD card for this example: 10 | 11 | gpu_mem=128 12 | 13 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 14 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTeapot/RPi2/libhello_teapot.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTeapot/RPi2/libhello_teapot.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTiger/RPi/HelloTiger.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Tiger (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "OpenVG"], 4 | "Description" : "A basic OpenVG example showing a rotating picture of a tiger, this example uses a picture embedded in the code.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTiger/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Tiger 2 | 3 | A basic OpenVG example showing a rotating picture of a tiger, this example uses a picture embedded in the code. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTiger/RPi/libhello_tiger.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTiger/RPi/libhello_tiger.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTiger/RPi2/HelloTiger.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Tiger (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenVG"], 4 | "Description" : "A basic OpenVG example showing a rotating picture of a tiger, this example uses a picture embedded in the code.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTiger/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Tiger 2 | 3 | A basic OpenVG example showing a rotating picture of a tiger, this example uses a picture embedded in the code. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTiger/RPi2/libhello_tiger.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTiger/RPi2/libhello_tiger.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle/RPi/HelloTriangle.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Triangle (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "3D", "OpenGL ES"], 4 | "Description" : "A rotating 3D cube in OpenGL ES with an image rendered on each face.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the Djenne_128_128.raw, Gaudi_128_128.raw and Lucca_128_128.raw files from the Media folder to your SD card.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Triangle 2 | 3 | A rotating 3D cube in OpenGL ES with an image rendered on each face. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the Djenne_128_128.raw, Gaudi_128_128.raw and Lucca_128_128.raw files from the Media folder to your SD card. 8 | 9 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle/RPi/libhello_triangle.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTriangle/RPi/libhello_triangle.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle/RPi2/HelloTriangle.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Triangle (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "3D", "OpenGL ES"], 4 | "Description" : "A rotating 3D cube in OpenGL ES with an image rendered on each face.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the Djenne_128_128.raw, Gaudi_128_128.raw and Lucca_128_128.raw files from the Media folder to your SD card.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Triangle 2 | 3 | A rotating 3D cube in OpenGL ES with an image rendered on each face. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the Djenne_128_128.raw, Gaudi_128_128.raw and Lucca_128_128.raw files from the Media folder to your SD card. 8 | 9 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle/RPi2/libhello_triangle.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTriangle/RPi2/libhello_triangle.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle2/RPi/HelloTriangle2.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Triangle2 (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "OpenGL ES", "Mandelbrot"], 4 | "Description" : "Using an OpenGL ES 2 shader to draw a mandelbrot set.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle2/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Triangle2 2 | 3 | Using an OpenGL ES 2 shader to draw a mandelbrot set. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle2/RPi/libhello_triangle2.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTriangle2/RPi/libhello_triangle2.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle2/RPi2/HelloTriangle2.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Triangle2 (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenGL ES", "Mandelbrot"], 4 | "Description" : "Using an OpenGL ES 2 shader to draw a mandelbrot set.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle2/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Triangle2 2 | 3 | Using an OpenGL ES 2 shader to draw a mandelbrot set. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 8 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloTriangle2/RPi2/libhello_triangle2.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloTriangle2/RPi2/libhello_triangle2.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi/HelloVideo.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Video (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "OpenMAX", "Video", "H264"], 4 | "Description" : "Playing a small piece of h264 video using the OpenMAX IL libraries.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the test.h264 file from the Media folder to your SD card.\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Video 2 | 3 | Playing a small piece of h264 video using the OpenMAX IL libraries. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the test.h264 file from the Media folder to your SD card. 8 | 9 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi/libhello_video.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloVideo/RPi/libhello_video.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi2/HelloVideo.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Video (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenMAX", "Video", "H264"], 4 | "Description" : "Playing a small piece of h264 video using the OpenMAX IL libraries.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the test.h264 file from the Media folder to your SD card.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Video 2 | 3 | Playing a small piece of h264 video using the OpenMAX IL libraries. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the test.h264 file from the Media folder to your SD card. 8 | 9 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi2/libhello_video.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloVideo/RPi2/libhello_video.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi4/HelloVideo.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Video (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "OpenMAX", "Video", "H264"], 4 | "Description" : "Playing a small piece of h264 video using the OpenMAX IL libraries.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the test.h264 file from the Media folder to your SD card.\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Video 2 | 3 | Playing a small piece of h264 video using the OpenMAX IL libraries. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the test.h264 file from the Media folder to your SD card. 8 | 9 | Raspberry Pi 4B/400 version 10 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideo/RPi4/libhello_video.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloVideo/RPi4/libhello_video.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideocube/RPi/HelloVideocube.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Videocube (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "3D", "Video"], 4 | "Description" : "Combining the 3D cube from hello triangle with video from the previous example, very nice demonstration.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the test.h264 file from the Media folder to your SD card.\r\n\r\nNote: You must include the following setting in a config.txt file in the root directory of the SD card for this example:\r\n\r\ngpu_mem=128\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideocube/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Videocube 2 | 3 | Combining the 3D cube from hello triangle with video from the previous example, very nice demonstration. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the test.h264 file from the Media folder to your SD card. 8 | 9 | Note: You must include the following setting in a config.txt file in the root directory of the SD card for this example: 10 | 11 | gpu_mem=128 12 | 13 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 14 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideocube/RPi/libhello_videocube.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloVideocube/RPi/libhello_videocube.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideocube/RPi2/HelloVideocube.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello Videocube (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "3D", "Video"], 4 | "Description" : "Combining the 3D cube from hello triangle with video from the previous example, very nice demonstration.\r\n\r\nThis example directly imports the C code from the original hello_pi collection.\r\n\r\nMake sure you also copy the test.h264 file from the Media folder to your SD card.\r\n\r\nNote: You must include the following setting in a config.txt file in the root directory of the SD card for this example:\r\n\r\ngpu_mem=128\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideocube/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello Videocube 2 | 3 | Combining the 3D cube from hello triangle with video from the previous example, very nice demonstration. 4 | 5 | This example directly imports the C code from the original hello_pi collection. 6 | 7 | Make sure you also copy the test.h264 file from the Media folder to your SD card. 8 | 9 | Note: You must include the following setting in a config.txt file in the root directory of the SD card for this example: 10 | 11 | gpu_mem=128 12 | 13 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 14 | -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/HelloVideocube/RPi2/libhello_videocube.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/HelloVideocube/RPi2/libhello_videocube.a -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/Media/Djenne_128_128.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/Media/Djenne_128_128.raw -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/Media/Gaudi_128_128.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/Media/Gaudi_128_128.raw -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/Media/Lucca_128_128.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/Media/Lucca_128_128.raw -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/Media/teapot.obj.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/Media/teapot.obj.dat -------------------------------------------------------------------------------- /VideoCoreIV/HelloPi/Media/test.h264: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/HelloPi/Media/test.h264 -------------------------------------------------------------------------------- /VideoCoreIV/OpenGLES/HelloGLES/RPi2/HelloGLES.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello GLES (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenGL ES"], 4 | "Description" : "A direct port to Free Pascal of the hello triangle OpenGL ES 1.1 example, except this one allows you to supply your own bitmap.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/OpenGLES/HelloGLES/RPi2/Logo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/OpenGLES/HelloGLES/RPi2/Logo.bmp -------------------------------------------------------------------------------- /VideoCoreIV/OpenGLES/HelloGLES/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello GLES 2 | 3 | A direct port to Free Pascal of the hello triangle OpenGL ES 1.1 example, except this one allows you to supply your own bitmap. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero. 6 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenGLES/HelloGLES2/RPi2/HelloGLES2.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello GLES2 (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenGL ES"], 4 | "Description" : "The spinning and rotating 3D cube done in OpenGL ES 2.0 instead, without the texture images but you can see the differences.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/OpenGLES/HelloGLES2/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello GLES2 2 | 3 | The spinning and rotating 3D cube done in OpenGL ES 2.0 instead, without the texture images but you can see the differences. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero. 6 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenGLES/README.md: -------------------------------------------------------------------------------- 1 | ## Ultibo OpenGL ES examples 2 | 3 | This folder contains a pair of OpenGL ES examples written purely in Free Pascal to demonstrate how to initialize an OpenGL ES context in both version 1.1 and 2.0. 4 | 5 | These examples are included in the Ultibo core installer download and can be found from the Lazarus IDE by selecting Tools, Example Projects.. from the menu. 6 | 7 | Note that these examples don't work on the Raspberry Pi 4B/400 as it uses a different GPU that is not compatible with the current libraries. 8 | 9 | ### OpenGL ES examples: 10 | 11 | * HelloGLES - A direct port to Free Pascal of the hello triangle OpenGL ES 1.1 example, except this one allows you to supply your own bitmap. 12 | 13 | * HelloGLES2 - The spinning and rotating 3D cube done in OpenGL ES 2.0 instead, without the texture images but you can see the differences. 14 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/AppFontsDemo/RPi3/AppFontsDemo.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - App Fonts Demo (RPi3)" : { 2 | "Category" : "Ultibo (Raspberry Pi 3A/3B/Zero2)", 3 | "Keywords" : ["GPU", "OpenVG", "Fonts"], 4 | "Description" : "An example showing the use of the VGShapesLoadAppFont function to load custom application fonts into VGShapes and display them on multiple layers.\r\n\r\nExample contributed by Richard Metcalfe.\r\n\r\nRaspberry Pi 3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/AppFontsDemo/RPi3/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - App Fonts Demo 2 | 3 | An example showing the use of the VGShapesLoadAppFont function to load custom application fonts into VGShapes and display them on multiple layers. 4 | 5 | Example contributed by Richard Metcalfe. 6 | 7 | Raspberry Pi 3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero/2B. 8 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/HelloVG/RPi2/HelloVG.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Hello VG (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenVG"], 4 | "Description" : "A simple introduction to the world of OpenVG, kind of Hello World for 2D graphics.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/HelloVG/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Hello VG 2 | 3 | A simple introduction to the world of OpenVG, kind of Hello World for 2D graphics. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero. 6 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/MultipleLayers/RPi2/MultipleLayers.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Multiple Layers (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenVG", "Layers"], 4 | "Description" : "An example showing the use of multiple screen layers by combining the Hello VG example with some shapes moving around the screen.\r\n\r\nNote: You must include the following settings in a config.txt file in the root directory to provide sufficient GPU memory for this example:\r\n\r\ngpu_mem=128\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/MultipleLayers/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Multiple Layers 2 | 3 | An example showing the use of multiple screen layers by combining the Hello VG example with some shapes moving around the screen. 4 | 5 | Note: You must include the following settings in a config.txt file in the root directory to provide sufficient GPU memory for this example: 6 | 7 | gpu_mem=128 8 | 9 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero. 10 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/README.md: -------------------------------------------------------------------------------- 1 | ## Ultibo OpenVG examples 2 | 3 | As part of supporting the VideoCore IV we have included a Free Pascal port of libShapes by A J Starks, this unit is included in the FPC packages and can be used by including VGShapes in your program. 4 | 5 | The examples in this folder demonstrate some of the functionality of the VGShapes unit which includes a range of common shapes as well as fonts, gradients, outlines and bezier curves. 6 | 7 | These examples are included in the Ultibo core installer download and can be found from the Lazarus IDE by selecting Tools, Example Projects.. from the menu. 8 | 9 | Note that these examples don't work on the Raspberry Pi 4B/400 as it uses a different GPU that is not compatible with the current libraries. 10 | 11 | ### OpenVG examples: 12 | 13 | * HelloVG - A simple introduction to the world of OpenVG, kind of Hello World for 2D graphics. 14 | 15 | * ShapesDemo - A demonstration of many of the available features of VGShapes, ported from the refcard example in the original library. 16 | 17 | * MultipleLayers - An example showing the use of multiple screen layers by combining the Hello VG example with some shapes moving around the screen. 18 | 19 | * AppFontDemo - An example showing the use of the VGShapesLoadAppFont function to load custom application fonts into VGShapes and display them on multiple layers. -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/ShapesDemo/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - Shapes Demo 2 | 3 | A demonstration of many of the available features of VGShapes, ported from the refcard example in the original library. 4 | 5 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero. 6 | -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/ShapesDemo/RPi2/ShapesDemo.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - Shapes Demo (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "OpenVG", "VGShapes"], 4 | "Description" : "A demonstration of many of the available features of VGShapes, ported from the refcard example in the original library.\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version, copy the code to a new project to create a version for A/B/A+/B+/Zero"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/OpenVG/ShapesDemo/RPi2/Ultibo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/OpenVG/ShapesDemo/RPi2/Ultibo.jpg -------------------------------------------------------------------------------- /VideoCoreIV/README.md: -------------------------------------------------------------------------------- 1 | ## Ultibo VideoCore IV examples 2 | 3 | This folder contains examples showing how to use some of the features of the VideoCore IV Graphics Processor (GPU) in the Raspberry Pi. 4 | 5 | The examples include some from the collection that are supplied with Raspbian (the hello_pi examples) as well as some from other sources and some specific to Ultibo. 6 | 7 | These examples are included in the Ultibo core installer download and can be found from the Lazarus IDE by selecting Tools, Example Projects.. from the menu. 8 | 9 | Note that some of these examples don't work on the Raspberry Pi 4B/400 as it uses a different GPU that is not compatible with the current libraries. 10 | 11 | ### VideoCore IV examples: 12 | 13 | * HelloPi - A number of examples from the hello_pi collection that have been ported to run under Ultibo. 14 | 15 | * OpenGLES - Some OpenGL ES examples written purely in Free Pascal. 16 | 17 | * OpenVG - Several OpenVG examples showing what you can do with the VGShapes unit which we have ported to Free Pascal from A J Starks libShapes. 18 | 19 | * RaspiCam - Two examples showing how RaspiStill and RaspiVid can be used at present to get access to the official Raspberry Pi camera from Ultibo. 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/README.md: -------------------------------------------------------------------------------- 1 | ## Ultibo RaspiCam examples 2 | 3 | The official Raspberry Pi camera uses the MMAL (Multimedia Abstration Layer) API to capture and encode images, provide previews and perform many other complex transformation functions. 4 | 5 | As yet the MMAL API headers have not been ported to Free Pascal so in order to allow access to the camera we have recompiled the RaspiStill and RaspiVid applications as libraries that can be included in an Ultibo application. 6 | 7 | The examples in this folder show the basic usage of these libraries as a temporary solution until more sophisticated and direct access is available. 8 | 9 | These examples are included in the Ultibo core installer download and can be found from the Lazarus IDE by selecting Tools, Example Projects.. from the menu. 10 | 11 | ### RaspiCam examples: 12 | 13 | * RaspiStill - An example showing how to control the RaspiStill application to take still images from the camera. 14 | 15 | * RaspiVid - Using the RaspiVid application from within Ultibo to capture video images. 16 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - RaspiStill 2 | 3 | An example showing how to control the RaspiStill application to take still images from the camera. 4 | 5 | This example directly imports the C code from the original raspistill application. 6 | 7 | Note: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example: 8 | 9 | start_x=1 10 | gpu_mem=128 11 | 12 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 13 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi/RaspiStill.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - RaspiStill (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "Camera", "Image"], 4 | "Description" : "An example showing how to control the RaspiStill application to take still images from the camera.\r\n\r\nThis example directly imports the C code from the original raspistill application.\r\n\r\nNote: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example:\r\n\r\nstart_x=1\r\ngpu_mem=128\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi/libraspistill.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiStill/RPi/libraspistill.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi/libraspiyuv.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiStill/RPi/libraspiyuv.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - RaspiStill 2 | 3 | An example showing how to control the RaspiStill application to take still images from the camera. 4 | 5 | This example directly imports the C code from the original raspistill application. 6 | 7 | Note: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example: 8 | 9 | start_x=1 10 | gpu_mem=128 11 | 12 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 13 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi2/RaspiStill.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - RaspiStill (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "Camera", "Image"], 4 | "Description" : "An example showing how to control the RaspiStill application to take still images from the camera.\r\n\r\nThis example directly imports the C code from the original raspistill application.\r\n\r\nNote: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example:\r\n\r\nstart_x=1\r\ngpu_mem=128\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi2/libraspistill.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiStill/RPi2/libraspistill.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi2/libraspiyuv.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiStill/RPi2/libraspiyuv.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - RaspiStill 2 | 3 | An example showing how to control the RaspiStill application to take still images from the camera. 4 | 5 | This example directly imports the C code from the original raspistill application. 6 | 7 | Note: You must copy the additional firmware files start4x.elf and fixup4x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example: 8 | 9 | start_x=1 10 | gpu_mem=128 11 | 12 | Raspberry Pi 4B/400 version 13 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi4/RaspiStill.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - RaspiStill (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "Camera", "Image"], 4 | "Description" : "An example showing how to control the RaspiStill application to take still images from the camera.\r\n\r\nThis example directly imports the C code from the original raspistill application.\r\n\r\nNote: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example:\r\n\r\nstart_x=1\r\ngpu_mem=128\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi4/libraspistill.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiStill/RPi4/libraspistill.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiStill/RPi4/libraspiyuv.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiStill/RPi4/libraspiyuv.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - RaspiVid 2 | 3 | Using the RaspiVid application from within Ultibo to capture video images. 4 | 5 | This example directly imports the C code from the original raspivid application. 6 | 7 | Note: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example: 8 | 9 | start_x=1 10 | gpu_mem=128 11 | 12 | Raspberry Pi A/B/A+/B+/Zero/ZeroW version 13 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi/RaspiVid.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - RaspiVid (RPi)" : { 2 | "Category" : "Ultibo (Raspberry Pi A/B/Zero)", 3 | "Keywords" : ["GPU", "Camera", "Video"], 4 | "Description" : "Using the RaspiVid application from within Ultibo to capture video images.\r\n\r\nThis example directly imports the C code from the original raspivid application.\r\n\r\nNote: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example:\r\n\r\nstart_x=1\r\ngpu_mem=128\r\n\r\nRaspberry Pi A/B/A+/B+/Zero/ZeroW version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi/libraspivid.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiVid/RPi/libraspivid.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi/libraspividyuv.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiVid/RPi/libraspividyuv.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi2/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - RaspiVid 2 | 3 | Using the RaspiVid application from within Ultibo to capture video images. 4 | 5 | This example directly imports the C code from the original raspivid application. 6 | 7 | Note: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example: 8 | 9 | start_x=1 10 | gpu_mem=128 11 | 12 | Raspberry Pi 2B/3B/3B+/3A+/Zero2W version 13 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi2/RaspiVid.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - RaspiVid (RPi2)" : { 2 | "Category" : "Ultibo (Raspberry Pi 2B)", 3 | "Keywords" : ["GPU", "Camera", "Video"], 4 | "Description" : "Using the RaspiVid application from within Ultibo to capture video images.\r\n\r\nThis example directly imports the C code from the original raspivid application.\r\n\r\nNote: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example:\r\n\r\nstart_x=1\r\ngpu_mem=128\r\n\r\nRaspberry Pi 2B/3B/3B+/3A+/Zero2W version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi2/libraspivid.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiVid/RPi2/libraspivid.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi2/libraspividyuv.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiVid/RPi2/libraspividyuv.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi4/README.txt: -------------------------------------------------------------------------------- 1 | VideoCore IV example - RaspiVid 2 | 3 | Using the RaspiVid application from within Ultibo to capture video images. 4 | 5 | This example directly imports the C code from the original raspivid application. 6 | 7 | Note: You must copy the additional firmware files start4x.elf and fixup4x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example: 8 | 9 | start_x=1 10 | gpu_mem=128 11 | 12 | Raspberry Pi 4B/400 version 13 | -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi4/RaspiVid.ex-meta: -------------------------------------------------------------------------------- 1 | { "VideoCore IV - RaspiVid (RPi4)" : { 2 | "Category" : "Ultibo (Raspberry Pi 4B/400)", 3 | "Keywords" : ["GPU", "Camera", "Video"], 4 | "Description" : "Using the RaspiVid application from within Ultibo to capture video images.\r\n\r\nThis example directly imports the C code from the original raspivid application.\r\n\r\nNote: You must copy the additional firmware files start_x.elf and fixup_x.dat to your SD card and include the following settings in a config.txt file in the root directory for this example:\r\n\r\nstart_x=1\r\ngpu_mem=128\r\n\r\nRaspberry Pi 4B/400 version"} 5 | } -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi4/libraspivid.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiVid/RPi4/libraspivid.a -------------------------------------------------------------------------------- /VideoCoreIV/RaspiCam/RaspiVid/RPi4/libraspividyuv.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ultibohub/Examples/efc0c59111555fd64231800102941ea0779b546b/VideoCoreIV/RaspiCam/RaspiVid/RPi4/libraspividyuv.a --------------------------------------------------------------------------------