Oxoscript se transforme en NanoPy - plus d'infos

Quoi de neuf?

18 septembre 2025

Nouveau firmware de la carte 1.6.6

Cette version contient quelques corrections d’erreurs. Entre autres, une petite erreur s’est glissée dans la nouvelle déclaration “repeat”, que nous avons maintenant corrigée.

4 septembre 2025

Nouvelle carte firmware 1.6.5

Cette version contient des changements pour désinitialiser les fonctions digitales LED et IR, ainsi qu’un nouveau mot-clé repeat

repeat

repeat est identique à l’instruction while true. Il peut être utilisé pour créer une boucle sans fin:

repeat:
    print("Hello world")
    delay(2000)

Désinitialisation des fonctions

Les nouvelles fonctions sont

qui permet de désinitialiser l’interface correspondante.

15 mai 2025

Nouvelle carte firmware 1.6.4

Cette version contient des changements pour prendre en charge les LED numériques RGBW.

Nouvelle fonction

Nouveau type de LED numérique

Exemple d’utilisation pour les LED RGBW:

initDigitalLeds(C_PIN_01, 4, C_LED_TYPE_SK6812W)
setDigitalLedMode(C_LED_MODE_GRB)

setDigitalLed2(0, 64, 0, 0, 0)
setDigitalLed2(1, 0, 64, 0, 0)
setDigitalLed2(2, 0, 0, 64, 0)
setDigitalLed2(3, 0, 0, 0, 64)
               
applyDigitalLeds()

25 avril 2025

Nouveau firmware de la carte 1.6.3

Nouvelles fonctions.

Cette version contient plusieurs nouvelles fonctionnalités:

_Fonctions mathématiques

bounds(value:float, min:float, max:float)->float

Cette fonction limite une valeur dans une plage de valeurs.

Exemple:


a = random(0,1000)
print bounds(a,0,100)


Fonctions_GUI

Les nouvelles fonctions storeDisplay() et resumeDisplay() permettent de sauvegarder temporairement le contenu actuel de l’écran. storeDisplay() sauvegarde ici l’état actuel. Avec resumeDisplay(), le contenu est à nouveau transféré dans la mémoire d’écran. Cette fonction permet par exemple de construire un menu superposé sans avoir à redessiner l’arrière-plan à chaque fois.

La classe color peut désormais aussi gérer un code couleur de 16 bits (codage 565). Cela correspond à la résolution d’écran interne de l’écran Oxocard.

La fonction getHSV() fournit un tableau d’octets avec la couleur de base, la saturation et la luminosité.

Nouvelles fonctions IO pour la transmission infrarouge.

Nous prenons désormais en charge le protocole de communication NEC courant pour les transmissions infrarouges. Les fonctions peuvent aussi bien envoyer que recevoir des données. Comme matériel, il est possible d’utiliser des cartes d’interface IR courantes.

Les fonctions initIrNecTx et sendIrNecData sont prévues pour l’envoi. Le protocole permet de transmettre une adresse et une valeur de données (2 octets chacune):


initIrNecTx(C_PIN_01)

clear()
drawTextCentered(120, 100, "Appuyer sur le bouton")
drawTextCentered(120, 140, "à envoyer")
update()


while true:
    b = getButtons()
    if(b.middle):
        # send NEC addr data
        sendIrNecData(0xFC00, 0x7F80)

Lors de la réception, les fonctions initIrNecRx et readIrNecData sont nécessaires. La fonction fournit les données reçues sous forme de tableau d’octets.



initIrNecRx(C_PIN_06)

while true:
    delay(50)
    res = readIrNecData() # returns [addr H bite, addr L byte, cmd H byte, cmd L byte]
    clear()
    drawTextCentered(120, 40, "Adresse:")
    drawTextCentered(120, 80, "0x" + byteToHex(res[0]) + byteToHex(res[1]))
    drawTextCentered(120, 140, "Commande:")
    drawTextCentered(120, 180, "0x" + byteToHex(res[2]) + byteToHex(res[3]))
    update()


Corrections d’erreurs et améliorations.

Dans cette version, nous avons corrigé plusieurs erreurs internes. Entre autres, les fonctions pour les pixels sériels (“Neopixel” entre autres) ont été améliorées.

3 février 2025

Hot Fix:

11 janvier 2024

Nouveau firmware de la carte 1.6.0/1.6.1

(1.6.1. hot fix pour dateTime-bug)

Corrections de bugs et améliorations.

Dans cette version, nous avons effectué plusieurs optimisations et mises à jour en arrière-plan

Dans les calculs avec des types de données mixtes, l’expression de gauche dans un terme détermine le type de données avec lequel le calcul est effectué.

Voici un exemple:

i = 1 # int
f = 1.5 # float
g = 0.0 # float

g = i + f # résultat: 2
g = f + i # résultat: 2.5

Pour la première ligne, “i” détermine que le résultat du calcul est un nombre int. Dans ce cas, “f” est transformé en nombre int.

Nouveau comportement:

Désormais, c’est la variable cible (ici: g) qui détermine si un int ou un float doit être calculé.

g = i + f # résultat: 2.5
g = f + F # résultat: 2.5

L’éditeur de texte peut ainsi être appelé dans NanoPy:

str = textInput("Test", "123")
print(str)

(Cancel/OK ne sont pas encore demandés pour le moment).

Dans l’éditeur de texte, on peut saisir un texte à l’aide du joystick. En déplaçant le curseur dans la ligne de saisie, il est possible de faire défiler et d’effacer certains caractères avec le bouton central.

avec les fonctions init/read/resetPulseCounter, il est désormais possible de configurer des compteurs proches du matériel, avec lesquels il est par exemple possible de lire des encodeurs de moteurs pas à pas.

resetPulseCounter(pinNr:byte)
readPulseCounter(pinNr:byte): int
initPulseCounter(pinNr:byte)

17 octobre 2024

Nouveau firmware de la carte 1.5.9

Correction d’erreurs

_Nouvelles fonctions

La fonction “WiFiPause()” interrompt la communication WiFi jusqu’à l’appel de “wifiResume()”.

Avec les fonctions “i2cUseBigEndian()” et “i2cUseLittleEndian()” on peut désormais définir dans la communication I2C la configuration correspondante utilisée par le périphérique I2C.

Charger le fichier de démarrage automatique sur la cartouche:

Dans l’éditeur, la commande “Charger sur la cartouche” est désormais disponible pour tous les scripts dans le menu contextuel. Cela permet d’enregistrer le script actuel directement sur la cartouche insérée ! Après chaque insertion de la cartouche, le nouveau script est immédiatement lancé.

9 septembre 2024

Nouveau firmware de la carte 1.5.8

Correction d’erreurs

log() affichait jusqu’à présent le logarithme Naturalis (base e). Nous sommes maintenant passés au logorithme de 10 et avons intégré à la place la nouvelle fonction “ln()”. Le logarithme de 2 peut être appelé avec la nouvelle fonction “log2()”.

_Nouvelles fonctions

Avec “getSystemTime()”, tu obtiens les microsecondes passées depuis le démarrage de la carte. Tu peux l’utiliser pour faire des calculs de temps d’exécution et des tests de performance.

Détection de la cartouche lors de l’insertion: Désormais, l’information est transmise au navigateur. Lorsque tu insères une carte, le navigateur te montre désormais où tu peux trouver des exemples à ce sujet.

Amélioration des performances graphiques: Nous travaillons continuellement à l’amélioration de la vitesse. Dans cette version, nous avons considérablement accéléré “clear” et “background”.

14 août 2024

Nouveau firmware de la carte 1.5.7

Correction d’erreurs

Malheureusement, deux erreurs de tableau se sont à nouveau glissées. Il s’agit d’appels de fonction à des tableaux dynamiques.

_Nouvelles fonctions

Avec “exit()”, il est désormais possible de quitter immédiatement le script en cours à tout moment.

La bibliothèque monitor a été ajoutée. Elle permet d’afficher les données du journal à l’écran. L’affichage défile automatiquement et les entrées peuvent être colorées différemment.

import monitor
monitor.init()

while true:
    r = random(0,5+1)
    if r == 0:
        monitor.push("Hi!")
    elif r == 1:
        monitor.pushc("It is hot today.", MONITOR_RED)
    elif r == 2:
        monitor.pushc("I am ready.", MONITOR_GREEN)
    elif r == 3:
        monitor.pushc("This is nice.", MONITOR_BLUE)
    elif r == 3:
        monitor.pushc("Let us talk.", MONITOR_YELLOW)
    delay(random(50,300))


22 juillet 2024

Nouveau firmware de la carte 1.5.4

(Fix: 1.5.5)

Correction d’erreurs

Lors de la déclaration d’un tableau, le type n’était pas repris correctement.

Nouveaux éléments de langage.

_Nouvelles fonctions

Nouvelles classes

23 avril 2024

Nouveau firmware de la carte 1.5.3

Correction d’erreurs

renvoie désormais toujours -1 sur la carte Science Plus. Cette valeur n’est pas définie pour cette carte. On peut utiliser getVOC() et getVOCIndex() à la place.

Erreur de tableau: - Les variables ne peuvent désormais plus être définies par des fonctions avec un tableau ouvert. Les exceptions sont les chaînes de caractères. Lors de l’attribution d’une chaîne de caractères, la variable est automatiquement définie avec une longueur de 120 caractères. - Une variable de tableau d’octets a pris par erreur la dimension d’une variable de dimension différente lors de son affectation.

Améliorations

La fonction a été améliorée. Il est désormais possible d’indiquer 0, ce qui permet de n’afficher que des nombres entiers. Les nombres sont désormais aussi correctement arrondis.

Nouvelles fonctions

byteToHex(valeur:octet)->octet[]

Convertit une valeur décimale en représentation hexadécimale. print byteToHex(255) # FF

hexToByte(valeur:byte[])->byte.

Convertit un nombre hexadécimal en une valeur décimale. print hexToByte(“FF”) # 255

24. février 2024

Nouveau firmware de la carte 1.5.2

Correction d’erreurs

améliorations - Science/Science+: amélioration de la détection de fréquence - Science: mise à jour du pilote VOC et eCO2 - Les nombres décimaux sont désormais toujours édités avec deux chiffres (au lieu de 5).

_Nouvelles fonctions

drawRectangleRounded(x,y,w,h,r)

Cette fonction s’appelait drawRoundedRectangle dans la dernière version, mais cela a entraîné quelques conflits avec des scripts existants.

drawSpriteScaled(x,y,w,h,s,data)

Comme drawSprite, mais un facteur d’échelle s peut être spécifié. Si 1 est indiqué, rien n’est mis à l’échelle. 2 signifie le doublement, etc.

textAlignment(alignment).

Cela permet maintenant d’aligner à gauche, à droite ou de centrer les chaînes qui sont éditées avec drawText. (Valeurs: TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT)

16. février 2024

Nouveau firmware de la carte 1.5.0

_nouveau dans l’éditeur

Correction d’erreurs

_Nouvelles fonctions

Nouveau design pour le système de menus.

Nouvelle fonction: isEqual(string1, string2)->bool.

Cette fonction compare deux chaînes de caractères et renvoie true ou false.

Nouvelle fonction: strCompare(chaîne1,chaîne2)->int.

Cette fonction compare deux chaînes et renvoie une valeur numérique, en fonction de l’ordre lexicographique. Si la valeur est “0”, les deux chaînes sont identiques. Une valeur négative signifie que la première chaîne doit être classée avant la deuxième chaîne.

Assistance pour l’Oxocard Science+.

La nouvelle Science+ des capteurs supplémentaires. En outre, le capteur de CO2 et de VoC de Renesas a été remplacé par des capteurs plus performants de Sensirion. Les fonctions suivantes sont nouvelles:

getVOC()->float. getVOCIndex()->float. getNOx()->float. getNOxIndex()->float. getTOF8x8()->int[64] getTOF4x4()->int[16]

22 décembre 2023

Nouveau firmware de la carte 1.4.8

_nouveau dans l’éditeur

Les scripts peuvent désormais être chargés et téléchargés.

Correction d’erreurs.

30 novembre 2023

Nouveau firmware de la carte 1.4.6 / 1.4.7

Nouveau

Nouvelles fonctions UART, SPI et Language.

Améliorations

Amélioration du message d’erreur lorsque l’appareil n’est pas connecté au WiFi.

Correction d’erreurs

Les décalages de pixels par défaut pour les écrans rotatifs ont été corrigés (de 240 à 239). La fonction clipRectangle() a également été corrigée. Diverses erreurs NanoPy ont été corrigées: - concaténation d’opérations binaires - Déclaration en place des tableaux statiques. - La déclaration implicite d’une chaîne de caractères est maintenant de 120 caractères, et non plus (120 - 6). - La déclaration d’une variable par le retour d’un tableau depuis une fonction objet fonctionne désormais correctement.

Nouvelles commandes:

Fonctions système

Fonctions IO

3 novembre 2023

Nouveau firmware de la carte 1.4.5

Nouveau

Les en-têtes de requêtes HTTP peuvent désormais être ajoutés avec addRequestHeader(key, value) et supprimés avec clearRequestHeaders().

Les fonctions de fichiers ont été étendues à writeLine(line) et readLine(). Ces fonctions permettent désormais d’écrire/lire beaucoup plus facilement dans/depuis un fichier.

Améliorations

Les réponses du serveur à une requête postRequest() peuvent maintenant aussi être lues avec les fonctions readRequest.

Les certificats serveur HTTPS sont désormais vérifiés en premier lieu avec le CA store interne et ne sont demandés directement au serveur cible qu’en cas d’erreur.

Correction d’erreurs

Les PWM en cours sont désormais correctement stoppés lors de l’initialisation d’un GPIO.

Nouvelles commandes:

Fonctions de fichier

Fonctions réseau

13 octobre 2023

Mises à jour de l’éditeur NanoPy

Il est désormais possible de convertir directement les images dans le format d’octet nécessaire. La fonction se trouve dans l’éditeur de constantes. Elle supporte au maximum les images de 24x24 pixels.

Nouveau firmware de la carte 1.4.4

Nouveau

MQTT/MQTTS - Échange désormais facilement des données via Internet grâce aux nouvelles fonctions MQTT.

Oxocard supporte désormais les requêtes HTTPS. Les certificats de serveur sont automatiquement demandés via notre serveur et déposés dans le dossier “certs” de l’Oxocard. Il est également possible d’ajouter soi-même un certificat dans le système de fichiers et d’y faire référence avec la fonction selectCertificate().

Améliorations

getRequest() peut maintenant retourner des “chunked data” depuis un serveur.

writePWM() a été amélioré pour que les valeurs de dutyCycle modifiées soient affichées de manière plus progressive.

Oxocard Science: les valeurs de décalage min/max réglables des capteurs ont été augmentées.

Correction d’erreurs

Dans la fonction drawEllipse() lors d’une rotation de 90° ou 270°, en plus de x & y, rx & ry sont maintenant aussi échangés.

Nouvelles commandes:

Fonctions de réseau

5 sept 2023 - Désormais utilisable sans cloud/hors ligne

Désormais utilisable sans cloud/hors ligne.

Dès maintenant, le puissant éditeur NanoPy est également disponible hors ligne. Le projet est open source et peut être téléchargé, instructions d’installation comprises, à partir de

Editeur hors ligne

peut être téléchargé. La documentation peut être mise en cache à partir de cette page via le navigateur:

Référence

17 août 2023

Mises à jour de l’éditeur NanoPy

Afin d’améliorer la lisibilité de la documentation, tous les paramètres et valeurs de retour des fonctions ont été retirés des titres. En revanche, chaque fonction a été complétée par une entrée de syntaxe.

Une catégorie de bibliothèque a été ajoutée à la documentation. Celle-ci décrit par exemple les bibliothèques IO internes et les bibliothèques de cartouches.

De nouveaux exemples de scripts ont été ajoutés pour l’Oxocard-Connect et les cartouches. Il convient de mentionner en particulier le cours d’électronique qui peut être réalisé avec le “Oxocard Connect Innovator Kit”.

Nouveau firmware de la carte 1.4.2

Nouveau

Il existe désormais la procédure d’événement onTimer(), qui peut être appelée une fois avec setTimer(ms:long) ou plusieurs fois après un certain temps avec setInterval(ms:long).

La reconnaissance de la cartouche lors de l’Oxocard-Connect a été améliorée. Elle fonctionne désormais même si un script est déjà en cours d’exécution.

La bibliothèque interne “io.npy” a été ajoutée. Elle permet de piloter ou de lire des IO avec seulement deux fonctions.

Améliorations

Lors d’un redémarrage de la carte via l’éditeur NanoPy, il est désormais possible de quitter les scripts avec “while 1:”.

L’avertissement “No WiFi connected” ou “No Editor paird” ne s’affiche désormais plus lorsqu’une cartouche est insérée.

setPrecision(0) est maintenant aussi supporté et se comporte comme si on utilisait round() pour chaque valeur.

Correction d’erreurs

La démo “LED FADE” de l’Oxocard-Connect a été renommée en “LED RUNNING”.

Lors de la connexion sérielle, l’Oxocard-Connect fait désormais automatiquement une réinitialisation et ne doit plus être éteinte et redémarrée manuellement via le menu.

Nouvelles commandes:

Fonctions mathématiques.

Fonctions de temps

Oxocard goes Open Source

Nous tenons notre promesse et allons progressivement rendre publics les designs et le code.

Sur github, vous trouverez désormais les schémas et les designs de toutes les Oxocards et cartouches. Les fichiers BOM (Bill of material) contiennent la liste de tous les composants utilisés. Cela permet aux makers de migrer le matériel Oxocard vers d’autres plates-formes logicielles.

Le firmware des Oxocards n’est actuellement pas encore open source, mais il peut désormais être flashé à tout moment sur les Oxocards. Ceci est nécessaire si les cartes ont été écrasées par exemple avec ESP-IDF ou avec Arduino. Tous les firmwares des cartouches sont open source.

28 juillet 2023

Nouveau firmware de la carte 1.4.1

Nouveau

Les scripts d’utilisateur qui ont été enregistrés sur l’Oxocard peuvent désormais être importés:

# print_hello.npy qui a été chargé sur la carte via "Mes scripts"
def printHelloWorld():
    print "Hello World !"

# main.npy
import print_hello
printHelloWorld() # Sortie: "Hello World !"

Sous Paramètres, il y a désormais l’option Rotation, qui permet de déterminer l’orientation de l’écran.

Tous les textes “Oxoscript” ont été changés en “NanoPy” et toutes les extensions de fichiers “.tc” en “.npy”.

Améliorations

Le champ de saisie de texte de textInput() est désormais quitté lorsqu’un nouveau script a été chargé sur la carte.

Les IO des utilisateurs sont réinitialisés lorsqu’un script est quitté ou lorsqu’un nouveau script est chargé.

Le délai d’attente lors d’un snapshot a été augmenté à 30 secondes.

Il est désormais possible de quitter l’affichage en cas d’erreur de compilation en appuyant sur n’importe quel bouton.

Correction d’erreurs

i2cReadByte() renvoie maintenant 0 si la lecture a échoué.

onClick() n’est maintenant exécuté qu’une fois par clic, comme prévu à l’origine, et non plus plusieurs fois.
Les exemples NanoPy qui utilisaient onClick() de manière incorrecte ont été corrigés.

Nouvelles commandes:

Fonctions IO

Fonctions système

Mai 2023: Oxoscript se transforme en NanoPy

Il existe plusieurs variantes du célèbre langage de programmation Python, auxquelles s’ajoute désormais le langage NanoPy. NanoPy est une version simplifiée de Python. Contrairement à l’original, il est typé de manière statique et peut donc être utilisé avec des exigences matérielles nettement moindres. Il est spécialement optimisé pour les petits ordinateurs. Le langage est basé sur le dialecte de Python, mais contient différentes simplifications qui facilitent l’initiation et la programmation. Jusqu’à présent, le langage était appelé Oxoscript. En raison de la parenté très étroite avec Python, nous avons décidé de changer ce nom.

30 mars 2023

Modifications apportées à l’éditeur:

Nouveau firmware de la carte 1.3.1

Améliorations

AP_SSID et AP_PASSWORD ont été modifiés afin d’éviter les conflits lorsque plusieurs cartes sont en mode point d’accès en même temps.

Si setAutostart(true) a été appelé, une fenêtre s’affiche désormais pendant 3 secondes lors du redémarrage de l’Oxocard, permettant de désactiver la fonction d’autostart.

L’Oxocard-Science a reçu le jeu “Flying Cow” et deux nouvelles démos. La démo “SENSING RADAR” permet de faire de superbes expériences sur les capteurs, car on peut voir comment les valeurs ont évolué dans le temps.

La fenêtre de sélection WiFi a été embellie et une fonction “renumériser” a été ajoutée.

Nouvelles commandes:

Fonctions système

3 février 2023

Nouveau firmware 1.2.9

Correction d’erreurs

strFind() et strSubstring() fonctionnent maintenant aussi avec des variables (avant seulement avec des constantes).

Nouvelles commandes:

Fonctions système

Fonctions du capteur

16 janvier 2023

Nouveau firmware 1.2.8

Correction d’erreurs

“print (1+2)+3” provoque maintenant une erreur. Pour les exemples avec expressions entre parenthèses, print ne doit pas être utilisé sans parenthèses. Correct: print ((1+2)+3)

“print 10.0%4” entraînait auparavant un message d’erreur.

“print 1+1” renvoie maintenant 2 et non 11.

Les fonctions stringToInt et stringToFloat peuvent désormais gérer les nombres négatifs.

22 décembre 2022

Nouveau firmware 1.2.7

Python ou pas: c’est vous qui décidez

Les deux points après if/else/for/while/def et class t’énervent ? Nous les avons empruntés au langage Python. Si tu les aimes, tu peux continuer à les écrire. Si ce n’est pas le cas, tu peux désormais les laisser de côté:-).

for i in 10:
    if i < 5:
        print("nombre profond")
    else:
        print("grand nombre")


ou

for i in 10
    if i < 5
        print("nombre profond")
    else
        print("grand nombre")


Beaucoup de débutants ont des difficultés avec les nombreux caractères spéciaux que nous avons repris de Python. Tu peux maintenant l’écrire comme en Python, ou simplement laisser tomber les parenthèses lors des appels de fonction dans les cas suivants:

Compatible avec Python:

clear()
drawText(10,10, "Hello World")
update()


Alternative avec moins de parenthèses:

clear
drawText 10,10, "Hello World"
update


Parce que c’est si beau, voici encore un exemple (pas de deux points, pas de parenthèses pour les appels de fonction sans valeur de retour)

turnOn = false

def onDraw
    if turnOn
        background 255,255,255
    else:
        background 0,0,0
    update

def onClick
    b = getButtons()
    if b.left
        turnOn = false
    elif b.right
        turnOn = true


Les valeurs de retour peuvent maintenant renvoyer des tableaux ouverts

Jusqu’à présent, il n’était possible de renvoyer que des tableaux de taille fixe:

def test()->byte[20]:
    return "Hello"

Désormais, la taille peut être ouverte:

def test(t)->byte[]
    a:byte[20]
    a="byte[20]"

    b:byte[10]
    b="byte[10]"

    if t%2 == 0
        return a
    else
        return b

for i in 10
    print test(i)


sizeof

La fonction sizeof peut maintenant être appliquée aux listes imbriquées.

Expérimental: nouvelle fonction de sérialisation pour les objets

Avec «, il est désormais possible de convertir des objets en tableaux d’octets et inversement. On peut ainsi enregistrer directement des objets dans des fichiers, par exemple. Nous utiliserons bientôt cette commande surtout pour des exemples de communication avancés, par exemple pour la communication entre coprocesseurs, capteurs (I2C), mais aussi pour des protocoles radio.

L’exemple stocke le contenu de l’objet v dans un tableau d’octets buf:

v = vector(x=10,y=20)
buf << v

Cela permet de réécrire les données:

buf = [0,0,32,65,0,0,160,65]
v:vecteur
v << buf
imprimer v.toString()

Introduction à NanoPy

Télécharge ici la documentation gratuite d’introduction à NanoPy:

Guide rapide d’NanoPy.

Maintenant sur Youtube

Nous avons maintenant un canal Youtube où nous mettons régulièrement en ligne de nouvelles vidéos. Une visite vaut la peine:

Oxocard Mini sur Youtube.

10 décembre 2022

Nouvelles de décembre

Nous avons développé un nouveau jeu. Celui-ci se trouve sous Exemples > Jeux > Flying Cow :-)

Correction de bugs

Optimisation de la sortie des sprites.

Nouvelles commandes:

Fonctions de chaînes

4 novembre 2022

Modifications apportées à l’éditeur:

Changements dans le firmware de la carte:

Corrections de bugs

Le passage correct d’un tableau en paramètre d’une fonction n’affiche désormais plus de message d’erreur.

Nouvelles commandes:

Fonctions graphiques 2D

Fonctions de réseau

Fonctions de chaîne

5 octobre 2022

Nouveau firmware 1.2.4

Expressions constantes

Les calculs simples peuvent désormais être effectués dans des constantes, pour autant qu’elles ne contiennent que des nombres ou d’autres constantes.

const ANGLE_30 = PI / 6
const SIZE = 100


Ces calculs peuvent désormais également être utilisés lors de la déclaration de tableaux. Auparavant, il était uniquement possible de spécifier une valeur fixe ou une constante.


const SIZE = 100

data:byte[SIZE * SIZE]
data2:byte[SIZE / 2]



Corrections de bugs

Pour les classes imbriquées avec des types de données tableaux intégrés, les tableaux n’étaient pas initialisés correctement dans tous les cas, ce qui signifiait que les tableaux avaient toujours la longueur 0. Ceci est maintenant corrigé.

Voici un exemple d’une classe SelectionList, qui contient une liste d’objets label, dont chacun contient une variable texte d’une longueur de 40 bytes :

class Label:
    i:float
    x:byte
    text:byte[40]

class SelectionList:
    labels:Label[5]
    def addText(text:byte[]):
        labels[0].text = text

sl:SelectionList
sl.labels[0].x=1
sl.labels[0].i=1.5
sl.addText("ABC")

print(sl.labels[0].text)
print(sl.labels[0].i)
print(sl.labels[0].x)

22 septembre 2022

Oxocard-Discord:

https://discord.gg/7zMew7KgaZ

Rejoins notre nouveau serveur Discord pour discuter directement avec les développeurs et faire partie de la communauté Oxocard.

Changements dans le firmware de la carte:

Nouvelles commandes:

Fonctions_2D

Fonctions de fichier

Fonctions_du_système

Fonctions_IO

26 août 2022

Nouvelles fonctions:

Programmation via le câble USB

Il est désormais possible de programmer les cartes via un câble USB. Pour cela, l’Oxocard doit disposer au minimum du firmware 1.2.2. Cela ne fonctionne qu’avec le navigateur Chrome et, selon le système d’exploitation, il faut encore installer des pilotes USB. Lorsque l’on se déconnecte, la nouvelle page d’inscription s’affiche et contient de plus amples informations.

Fonction snapshot

Il est désormais possible de prendre des photos de l’écran et de les afficher dans le navigateur. Pour cela, il y a un nouveau symbole d’appareil photo dans la barre d’outils à côté des outils de débogage. Celui-ci est actif lorsque le programme est en cours de débogage.

Exportation de fichiers

Si l’on souhaite transférer des données de capteurs vers le PC/Mac, on peut désormais le faire via la fenêtre du terminal. Pour cela, il suffit d’envoyer les données dans la fenêtre du terminal avec la commande print (attention: la fenêtre du terminal doit être ouverte, sinon rien ne sera transféré). Dans la fenêtre, il y a désormais un bouton de téléchargement en bas, qui exporte les données dans un fichier TXT.

Pour poursuivre le traitement avec Excel, il est recommandé de supprimer d’abord le terminal. Si plusieurs données doivent être envoyées, il suffit de les séparer par des “;”. p.ex. print(valeur1 + “;” + valeur2 + “;” … )

Exemple en ligne

Il y a encore beaucoup de nouveaux exemples à découvrir. Ils se trouvent sous “Exemples”: - 2D: de nombreuses petites apps te montrent comment construire des animations en deux dimensions. - 3D: grâce au moteur 3D intégré, tu peux aussi représenter des objets géométriques simples dans un espace tridimensionnel. - Jeux: tu trouveras ici d’autres petits jeux qui peuvent servir de base à tes propres expériences. - Parcours scientifique: ces exemples sont nécessaires dans le parcours scientifique disponible séparément. Plus d’informations sur info@oxocard.ch

Oxocard Science

Les démos ont été complétées par une application multimètre très performante. Elle permet d’observer toutes les valeurs des capteurs intégrés sur une échelle claire.

Modifications apportées au firmware de la carte:

7 juillet 2022

Modifications du firmware de la carte:

21 juin 2022

Modifications du firmware de la carte:

3 juin 2022

Erreurs corrigées dans NanoPy:

Nouveaux exemples

Sous le dossier “Exemples/3D” se trouve désormais un premier ensemble d’animations 3D. Les fonctions correspondantes seront documentées dans les prochains jours.

Nouvelle fonctionnalité

_Nouvelles classes

vector3D

Cette classe met à disposition les fonctions suivantes:

_Nouvelles fonctions

_Classes renommées

logValues a été renommé en logValue

6 mai 2022

Erreurs corrigées dans NanoPy:

Nouvelle fonctionnalité

Nouvelles classes

Nouvelles fonctions

Classe vector:

Classe dateTime:

Nouvelles constantes

7 avril 2022

Modifications apportées à l’éditeur:

Changements dans le firmware de la carte:

Nouvelles commandes:

Fichier_fonctions

Le système de fichiers de l’Oxocard peut désormais être manipulé avec des fonctions simples. Cela permet par exemple de collecter et de persister des textes ou des données de capteurs. Il est également possible de lire et de traiter les données après une coupure de courant.

open(C_WRITE, "mon_fichier.txt")
text = "Hello World!"
for c in text:
  write(c)
close()

...

open(C_READ, "mon_fichier.txt")
text:byte[13] # to hold "Hello World!"
for i in 13:
  text[i] = read()
close()

setAutostart(enable)

Si la fonction Autostart a été activée, on passe directement au programme de démarrage lors du redémarrage de l’Oxocard (après la connexion à Internet).

setAutostart(true)

turnOff()

Éteint l’oxocard.

sleep(sec)

Eteint l’Oxocard et le fait redémarrer après x secondes.

Fonctions sonores

De nombreuses nouvelles fonctions audio ont été ajoutées, permettant désormais de composer et de jouer des chansons entières avec du code.

setBPM(180)
beginSong()
noteAdvanced(C_NOTE_G, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_4, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_B, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_C, C_DURATION_1_4, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_C, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_C, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_D, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_B, C_DURATION_1_4, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_B, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_G, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_OCTAVE_C4, 1.5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
#...
endSong()
playSong(true)

3 mars 2022

Modifications de l’éditeur:

Modifications du firmware de la carte:

x=5
y=10
for i in [x..y]:
  print(i)

Des séries décroissantes sont également possibles:

for i in [-10..-20]:
  print(i)

Nouvelles commandes:

setPrecision(precision)

Formate les décimales lors de l’affichage de valeurs flottantes:

f = 1.23931
setPrecision(2)
print(f) # "1.24"

clipRectangle(x,y,w,h)

Limite la sortie pour les commandes de dessin. Le dessin n’est effectué que dans le rectangle défini.

clipRectangle(0,0,240,120)
clear()
drawCircle(120,120,80)
mettre à jour()

noClipping()

Réinitialise le réglage du clipping sur tout l’écran.

drawImageMonoCentered(x,y,w,h,img)

Cette commande est identique à drawImageMono(..), mais l’image est dessinée au centre de la coordonnée x/y (au lieu d’être en haut à gauche). Ainsi, en combinaison avec les commandes rotate() et scale(), il est maintenant possible de faire pivoter ou d’agrandir/réduire une image en la centrant.