#include “HX711.h” #define calibration_factor -9580.00 //This value is obtained using the SparkFun_HX711_Calibration sketch #define DOUT 4 #define CLK 5 HX711 scale(DOUT, CLK); void setup() { Serial.begin(9600); Serial.println(“HX711 scale demo”); scale.set_scale(calibration_factor); scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0 Serial.println(“Readings:”); } void loop() { Serial.print(“Reading: “); float libbre = scale.get_units(); float kg = (libbre/2.2046); Serial.print(kg, 1); //scale.get_units() returns a float Serial.print(” kg”); //You can change this to kg but you’ll need to refactor the calibration_factor Serial.println(); }
This process involves precisely timing the ignition to interrupt the airbag system’s self-check. No tools are required. Preparation: Sit in the driver’s seat and ensure all doors are closed. Turn Ignition ON: Turn the key to the “ON” position (or press the Start button twice without touching the brake). Watch the Light: The airbag light will illuminate and stay solid for about 7 seconds. Turn Ignition OFF: Immediately turn the ignition off the moment the light begins to flash or turns off. Wait: Wait for at least 5 seconds. Repeat: Repeat steps 2 through 5 three more times (for a total of 4 cycles). Final Start: Turn the engine on. The light should stay on for 7 seconds and then extinguish.
Turn ignition on, wait for airbag light to turn off(start blinking), turn ignition off, wait exactly 5 seconds, turn back on, repeat the same 2 more times.
La nuova versione di libxml è libxml2 e gli include da usare si trovano nel direttorio libxml2, quindi visual studio di default non li troverà. Per fare in modo che li trovi è necessario aggiungere manualmente al progetto il direttorio dove andare a cercare gli include.
Tasto destro sul progetto -> Properties. In C/C++ -> Direttorio inclusioni aggiuntive, aggiungi: C:\path\to\vcpkg\installed\x64-windows\include\libxml2
Eventualmente aggiungere anche il linker: Linker -> Direttorio librerie aggiuntive, aggiungi: C:\path\to\vcpkg\installed\x64-windows\lib
Eventualmente aggiungere anche la dipendenza. Linker -> Input -> Dipendenze addizionali, aggiungi: libxml2.lib
Come saprete, la presa scart è un connettore multi funzione. Consente di collegare dispositivi con diversi protocolli in uscita dal device o in entrata.
I segnali sono separati tra audio e video. I segnali audio sono stereo, quelli video trasportano protocolli diversi su pin diversi. Lo schema dei contatti è visibile nella figura seguente, in cui compare un connettore femmina visto da davanti.
Le uscita audio sono la 1 e la 3. Gli ingressi sono il 2 e il 6. La massa è in comune ed è il terminale 4.
Quindi se dobbiamo collegare un videoregistratore ad un amplificatore esterno è necessario selezionare i Pin output. Se dobbiamo collegare un dispositivo audio in entrata al videoregistratore dobbiamo usare i pin 2 e 6.
Per quanto riguarda le uscite video, queste sono più variegate. Per ragioni storiche sono disponibili uscite composito, s-video e rgb separati. Per questioni pratiche si usa molto più spesso solo la parte composita.
A questo scopo, per collegare un videoregistratore ad un tv esterno (quindi in uscita) dobbiamo utilizzare i pin 17 e 19 (massa e segnale). Per collegare un dispositivo in ingresso al videoregistratore si devono usare i pin 18 e 20.
Quindi un tipico convertitore da uscita scart a connettore video out composito RCA collegherà i terminai 17 e 19 alla calza e al segnale del connettore RCA.
Per gestire impianti di illuminazione complessi non si adoperano più i triac a parzializzazione della forma d’onda come trent’anni fa. Oggi si utilizzano reti di dispositivi connessi interfacciati con una connessione digitale.
Uno dei protocolli più utilizzati a questo scopo è il protocollo DALI.
Per vedere una possibile applicazione con Arduino, senza l’utilizzo di costosi shield da acquistare a parte, un utente di Hackster ha realizzato questo semplice tutorial:
Esistono alcuni plugin di Blender che semplificano la generazione di animazioni dei personaggi. Due di questi, che mi vengono in mente e sono da approfondire sono:
In alcune occasioni serve dividere un oggetto in due parti per poi eliminarne una. Il modo più pratico è quello di applicare il modifier Boolean usando come oggetto tagliante un piano (preferibilmente solidificato con il modifier Solidify) e poi di separare le due parti dall’oggetto.
Dopo aver applicato il Boolean, Blender non crea automaticamente due oggetti separati: ottieni una sola mesh con parti scollegate tra loro. Devi quindi separare o selezionare le “isole” di mesh.
Di seguito i metodi corretti in Blender 5.0.
Metodo 1 – Separare le parti automaticamente (consigliato)
Seleziona l’oggetto
TAB → Edit Mode
A per selezionare tutto
P → Separate
Scegli By Loose Parts
➡️ Blender crea oggetti separati per ogni parte non collegata. Ora puoi:
I componenti SMD possono essere davvero minuscoli. Questo fa sì che i costruttori non possano inserire sull’involucro il nome per esteso e le caratteristiche di ogni singolo componente, di conseguenza si trova sempre stampigliato sul corpo una sigla sintetica.
Per risalire al componente vero e proprio si fa uso di una tabella di transcodifica, che lega la sigla al prodotto.
Un database che consente la ricerca di questi componenti si trova al seguente link:
Nell’ultimo anno io e la mia famiglia ci siamo prodigati nel realizzare un piccolo presepe casalingo. L’idea era quella di espandere quello di due anni fa quando costruimmo una piccola casetta antica (in gesso) e una grotta con la natività di Gesù all’interno. Da quella idea ne è nato questo presepe che ci ha soddisfatti nei contenuti, nonostante risulti ancora in parte incompleto.
Le luci sono sincronizzate con i suoni e le musiche diffuse attraverso un piccolo altoparlante controllato da una scheda elettronica che mi sono auto costruito.
L’intero apparato di luci e di sincronizzazione degli effetti è controllabile da remoto, accedendo ad una pagina internet.
Durante l’esecuzione viene attivato anche un fiume che trasporta l’acqua all’interno di un piccolo laghetto. L’acqua scorre dopo un temporale che è accompagnato da tuoni e fulmini.
E’ sempre interessante discutere di argomenti di alto livello tecnologico come interpretare la densità di transistor stipabili in un microchip. Premesso che il nome attribuito ad un livello tecnologico (3nm, 7nm, 2nm) non ha più alcun collegamento con le dimensioni fisiche del dispositivo sottostante, in questo articolo di Quora si trova un’analisi abbastanza dettagliata delle prestazioni delle varie tecnologie adottate dalle principali aziende del settore (in primis TSMC, Samsung, Intel, IBM).
Many, maybe 90% people, think 3nm represents transistor size. And they are VERY wrong! 3nm is just a name having nothing with real physical dimensions. In the past, before Intel “invented” FinFET and started using them with 22nm node in 2011, nm represented width of the MOSFET channel. But with FinFET things change and they changed in 2024 with FinFET was replaced with GAA. Here is nice picture showing how MOSFET evolved:
With FinFET MOSFETs entered 3D world. Let me show IBM 2nm node from 2019 (experimental), electron microscope picture of a transistor:
Is above anything physical 2nm in size? NO. Actual single transistor size was cca 50 x 70 nm. With FinFET is “worse” cause FinFET performance depends on number of fins – more fins – faster transistor.
Real measurements used are CPP (gate pitch) and MPP (metal pitch). Here table from Wiki which connects them to physical feature dimensions:
As in IBM picture above, CPP (gate pitch) for 2nm node was 48 nm. Notice also how pitch drops a bit while node names halved, eg 3nm CPP is 48 while for 2nm is 45 nm.
TSMC was first one to introduce node names expressed in nm while Intel (and others) followed. And Intel complained for reason. Do you remember old Intel 10nm node? It was total disaster Intel struggled with but it was later renamed to Intel7 or 7nm. Why? Cause TSMC 7nm node and Intel 10 nm had similar feature sizes. For example, TSCM 7nm CPP was 57nm while Intel 10nm was 60 nm and MPP was identical, 40 nm.
As node name represents nothing physical, Intel suggested to use SRAM cell area as measurement. A typical SRAM cell has 6 transistors (so called 6T), having schematics like this:
On the right side is physical layout with traces connecting transistors. Looking at physical areas for different nodes we have:
7nm (Intel 10nm):
3nm:
SRAM cell size is better physical dimension but still depends on node. Looking at TSMC 2nm and Intel18A (1.8nm), TSMC is bit smaller but Intel is faster. TSMC uses smaller transistors and maximal clocks are around 4 GHz, while Intel uses larger transistors and clocks are above 5 GHz. And, of course, Intel consumption is higher.
Another factor is kind of chip. Memories are way, way, way simpler than CPUs and higher densities are achievable. Above IBM 2nm chip was simple one. DRAM or FLASH are not reliable for measurements, especially FLASH having hundreds of layers, 321 in 2024. DRAM uses single transistor while FLASH stores up to 4 bits into single transistor. SRAM stores single bit and is fastest. But, besides 6T, also 4T exists.
Anyway, today nm stays as node name and it will stay so for few years to come.