
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01



Dunia moden memerlukan manusia melangkah keluar dari fizikal dan hidup dalam digital.
Dengan penampilan Al dan percambahan teknologi, orang terlalu mempercayai mesin dan mempercayainya selalu betul.
"Betul" dimaksudkan untuk menggoyahkan kepercayaan palsu ini melalui penciptaan ujian pengesan pembohongan palsu. Orang akan mudah percaya bahawa Benar-benar berfungsi tetapi apabila jawapan palsu diberikan, ia akan menggoyahkan kepercayaan mereka terhadap teknologi.
Langkah 1: Langkah 1: Memateri Litar
Oleh kerana karya saya hanya mempunyai satu cahaya, jadi sangat mudah untuk disolder. Masalah utama adalah pada awalnya, saya menyolder dua cahaya, tetapi saya langsung tidak menutup bahagian pendedahan. Oleh itu, apabila kedua-dua bahagian wayar bersentuhan. Ia pendek.
Langkah 2: Langkah 2: Tulis Kod
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; ketinggian garisan: 15.0 piksel; fon: 12.0px Kali; warna: # 000000; warna latar: #ffffff}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; ketinggian garisan: 15.0 piksel; fon: 12.0px Kali; warna: # 000000; warna latar: #ffffff; ketinggian min: 14.0px} span.s1 {font-kerning: none}
Langkah 2: Tulis Kod
/*********************************************************************
Ini adalah contoh untuk modul Bluefruit LE berasaskan nRF52 kami
Pilih hari ini di kedai iklan!
Adafruit melaburkan masa dan sumber yang menyediakan kod sumber terbuka ini, tolong sokong Adafruit dan perkakasan sumber terbuka dengan membeli
produk dari Adafruit!
Lesen MIT, periksa LESEN untuk maklumat lebih lanjut
Semua teks di atas, dan skrin percikan di bawah mesti disertakan dalam
sebarang pengagihan semula
*********************************************************************
/ Sketsa ini dimaksudkan untuk digunakan dengan alat kawalan NeoPixel
// permukaan dalam aplikasi mudah alih Adelruit's Bluefruit LE Connect.
/
/ - Susun dan pasangkan lakaran ini ke Bulu nRF52
// - Buka aplikasi Bluefruit LE Connect
// - Beralih ke utiliti NeoPixel
// - Klik butang 'sambung' untuk membuat sambungan dan
// hantar meta-data mengenai susun atur piksel
// - Gunakan utiliti NeoPixel untuk mengemas kini piksel pada peranti anda
/ * CATATAN: Lakaran ini memerlukan sekurang-kurangnya versi 1.1.0 Adafruit_Neopixel !!! * /
#sertakan
#sertakan
#sertakan
#tentukan NEOPIXEL_VERSION_STRING "Neopixel v2.0"
#define PIN 16 / * Pin yang digunakan untuk menggerakkan NeoPixels * /
#menentukan MAXKOMPONEN 4
uint8_t * pixelBuffer = NULL;
uint8_t lebar = 0;
uint8_t tinggi = 0;
uint8_t langkah;
uint8_t komponenNilai;
bool is400Hz;
komponen uint8_t = 3; // hanya 3 dan 4 adalah nilai yang sah
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel ();
// Perkhidmatan BLE
BLEDfu bledfu;
BLEDis bledis;
BLEUart bleuart;
persediaan tidak sah ()
{
Serial.begin (115200);
sementara (! Serial) kelewatan (10); // untuk nrf52840 dengan usb asli
Serial.println ("Adafruit Bluefruit Neopixel Test");
Serial.println ("--------------------------------");
Bersiri.println ();
Serial.println ("Sila sambungkan menggunakan aplikasi Bluefruit Connect LE");
// Konfigurasi Neopixels
neopixel.begin ();
// Init Bluefruit
Bluefruit.begin ();
Bluefruit.setTxPower (4); // Periksa bluefruit.h untuk nilai yang disokong
Bluefruit.setName ("Bluefruit52");
Bluefruit. Periph.setConnectCallback (connect_callback);
// Untuk menjadi konsisten OTA DFU harus ditambahkan terlebih dahulu jika ada
bledfu.begin ();
// Konfigurasikan dan Mulakan Perkhidmatan Maklumat Peranti
bledis.setManufacturer ("Adafruit Industries");
bledis.setModel ("Bluefruit Feather52");
bledis.begin ();
// Konfigurasikan dan mulakan perkhidmatan BLE UART
bleuart.begin ();
// Siapkan dan mulakan pengiklanan
mulaAdv ();
}
kekosongan permulaanAdv (kekosongan)
{
// Paket iklan
Bluefruit. Advertising.addFlags (BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit. Advertising.addTxPower ();
// Sertakan bleuart 128-bit uuid
Bluefruit. Advertising.addService (bleuart);
// Paket Respons Imbasan Sekunder (pilihan)
// Oleh kerana tidak ada ruang untuk 'Nama' dalam paket Iklan
Bluefruit. ScanResponse.addName ();
/ * Mula Iklan
* - Aktifkan iklan automatik jika terputus
* - Selang: mod pantas = 20 ms, mod perlahan = 152.5 ms
* - Waktu tamat untuk mod pantas ialah 30 saat
* - Mulakan (timeout) dengan timeout = 0 akan beriklan selamanya (sehingga disambungkan)
*
* Untuk selang iklan yang disyorkan
*
*/
Bluefruit. Advertising.restartOnDisconnect (benar);
Bluefruit. Advertising.setInterval (32, 244); // dalam unit 0.625 ms
Bluefruit. Advertising.setFastTimeout (30); // bilangan saat dalam mod pantas
Bluefruit. Advertising.start (0); // 0 = Jangan berhenti beriklan selepas n saat
}
batal connect_callback (uint16_t conn_handle)
{
// Dapatkan rujukan untuk sambungan semasa
BLEConnection * sambungan = Bluefruit. Connection (conn_handle);
char central_name [32] = {0};
sambungan-> getPeerName (nama_pusat, sizeof (nama_pusat));
Serial.print ("Bersambung ke");
Serial.println (nama_pusat);
Serial.println ("Sila pilih tab 'Neopixels', klik 'Sambung' dan bersenang-senang");
}
gelung kosong ()
{
// Echo menerima data
jika (Bluefruit.connected () && bleuart.notifyEnabled ())
{
perintah int = bleuart.read ();
beralih (arahan) {
case 'V': {// Dapatkan Versi
commandVersion ();
rehat;
}
case 'S': {// Siapkan dimensi, komponen, langkah…
arahanSetup ();
rehat;
}
casing 'C': {// Jelas dengan warna
commandClearColor ();
rehat;
}
kes 'B': {// Tetapkan Kecerahan
commandSetBrightness ();
rehat;
}
casing 'P': {// Tetapkan Pixel
commandSetPixel ();
rehat;
}
case 'I': {// Terima gambar baru
arahanImage ();
rehat;
}
}
}
}
pertukaran kosongBuffers ()
{
uint8_t * base_addr = pixelBuffer;
int pixelIndex = 0;
untuk (int j = 0; j <tinggi; j ++)
{
untuk (int i = 0; i <lebar; i ++) {
jika (komponen == 3) {
neopixel.setPixelColor (pixelIndex, neopixel. Color (* base_addr, * (base_addr + 1), * (base_addr + 2)));
}
lain {
neopixel.setPixelColor (pixelIndex, neopixel. Color (* base_addr, * (base_addr + 1), * (base_addr + 2), * (base_addr + 3)));
}
base_addr + = komponen;
pixelIndex ++;
}
pixelIndex + = langkah - lebar; // Pindahkan pixelIndex ke baris berikutnya (ambil kira langkah)
}
neopixel.show ();
}
perintah batalVersion () {
Serial.println (F ("Perintah: Pemeriksaan versi"));
sendResponse (NEOPIXEL_VERSION_STRING);
}
perintah batalSetup () {
Serial.println (F ("Perintah: Persediaan"));
lebar = bleuart.read ();
tinggi = bleuart.read ();
stride = bleuart.read ();
componentsValue = bleuart.read ();
is400Hz = bleuart.read ();
neoPixelType pixelType;
pixelType = componentsValue + (is400Hz? NEO_KHZ400: NEO_KHZ800);
komponen = (komponenValue == NEO_RGB || komponenValue == NEO_RBG || komponenValue == NEO_GRB || komponenValue == NEO_GBR || komponenValue == NEO_BRG || komponenValue == NEO_BGR)? 3: 4;
Serial.printf ("\ tsize:% dx% d / n", lebar, tinggi);
Serial.printf ("\ tstride:% d / n", langkah);
Serial.printf ("\ tpixelType% d / n", Jenis pixel);
Serial.printf ("\ tcomponents:% d / n", komponen);
jika (pixelBuffer! = NULL) {
padamkan pixelBuffer;
}
ukuran uint32_t = lebar * tinggi;
pixelBuffer = uint8_t baru [saiz * komponen];
neopixel.updateLength (saiz);
neopixel.updateType (pixelType);
neopixel.setPin (PIN);
// Selesai
sendResponse ("OK");
}
perintah batalSetBrightness () {
Serial.println (F ("Perintah: SetBrightness"));
// Nilai baca
uint8_t brightness = bleuart.read ();
// Tetapkan kecerahan
neopixel.setBrightness (kecerahan);
// Muat semula piksel
swapBuffers ();
// Selesai
sendResponse ("OK");
}
perintah batalClearColor () {
Serial.println (F ("Perintah: ClearColor"));
// Baca warna
warna uint8_t [MAXKOMPONEN];
untuk (int j = 0; j <komponen;) {
jika (bleuart.available ()) {
warna [j] = bleuart.read ();
j ++;
}
}
// Tetapkan semua warna ke warna
saiz int = lebar * tinggi;
uint8_t * base_addr = pixelBuffer;
untuk (int i = 0; i <size; i ++) {
untuk (int j = 0; j <komponen; j ++) {
* base_addr = warna [j];
base_addr ++;
}
}
// Tukar penyangga
Serial.println (F ("ClearColor selesai"));
swapBuffers ();
jika (komponen == 3) {
Serial.printf ("\ tclear (% d,% d,% d) n", warna [0], warna [1], warna [2]);
}
lain {
Serial.printf ("\ tclear (% d,% d,% d,% d) n", warna [0], warna [1], warna [2], warna [3]);
}
// Selesai
sendResponse ("OK");
}
perintah batalSetPixel () {
Serial.println (F ("Perintah: SetPixel"));
// kedudukan membaca
uint8_t x = bleuart.read ();
uint8_t y = bleuart.read ();
// Baca warna
uint32_t pixelOffset = y * lebar + x;
komponen uint32_t pixelDataOffset = pixelOffset *;
uint8_t * base_addr = pixelBuffer + pixelDataOffset;
untuk (int j = 0; j <komponen;) {
jika (bleuart.available ()) {
* base_addr = bleuart.read ();
base_addr ++;
j ++;
}
}
// Tetapkan warna
uint32_t neopixelIndex = y * langkah + x;
uint8_t * pixelBufferPointer = pixelBuffer + pixelDataOffset;
warna uint32_t;
jika (komponen == 3) {
color = neopixel. Color (* pixelBufferPointer, * (pixelBufferPointer + 1), * (pixelBufferPointer + 2));
Serial.printf ("\ tcolor (% d,% d,% d) n", * pixelBufferPointer, * (pixelBufferPointer + 1), * (pixelBufferPointer + 2));
}
lain {
color = neopixel. Color (* pixelBufferPointer, * (pixelBufferPointer + 1), * (pixelBufferPointer + 2), * (pixelBufferPointer + 3));
Serial.printf ("\ tcolor (% d,% d,% d,% d) n", * pixelBufferPointer, * (pixelBufferPointer + 1), * (pixelBufferPointer + 2), * (pixelBufferPointer + 3));
}
neopixel.setPixelColor (neopixelIndex, warna);
neopixel.show ();
// Selesai
sendResponse ("OK");
}
batal perintahImage () {
Serial.printf ("Perintah: Gambar% dx% d,% d,% d / n", lebar, tinggi, komponen, langkah);
// Terima buffer piksel baru
saiz int = lebar * tinggi;
uint8_t * base_addr = pixelBuffer;
untuk (int i = 0; i <size; i ++) {
untuk (int j = 0; j <komponen;) {
jika (bleuart.available ()) {
* base_addr = bleuart.read ();
base_addr ++;
j ++;
}
}
/*
jika (komponen == 3) {
uint32_t index = i * komponen;
Serial.printf ("\ tp% d (% d,% d,% d) n", i, pixelBuffer [index], pixelBuffer [index + 1], pixelBuffer [index + 2]);
}
*/
}
// Tukar penyangga
Serial.println (F ("Gambar diterima"));
swapBuffers ();
// Selesai
sendResponse ("OK");
}
batal sendResponse (char const * tindak balas) {
Serial.printf ("Kirim Respons:% s / n", respons);
bleuart.write (tindak balas, strlen (tindak balas) * sizeof (char));
}
Langkah 3: Langkah 3: Membeli Kap Lampu


Langkah 4: Langkah 4: Tarik Semua Bersama
Disyorkan:
Pengangkatan Akustik Dengan Arduino Uno Langkah demi Langkah (8-langkah): 8 Langkah

Acoustic Levitation With Arduino Uno Step-by Step (8-step): transduser suara ultrasonik L298N Dc power adaptor wanita dengan pin dc lelaki Arduino UNOBreadboardBagaimana ini berfungsi: Pertama, anda memuat naik kod ke Arduino Uno (ia adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk menukar kod (C ++)
Cabaran Litar Mummybot: 6 Langkah (dengan Gambar)

Cabaran Mummybot Circuits: Dalam kelas Pengenalan kepada Robotik, kami telah mempelajari elektrik dan litar. Untuk memperkenalkan aktiviti itu, saya membuat tayangan slaid yang sangat pendek (dilampirkan) yang mengambil JessyRatFink's Mummybot dan menambah litar asas. Saya memberi pelajar cabaran
Cabaran KEVA 3D 2: Tempat Tidur: 3 Langkah

Cabaran KEVA 3D 2: Tempat Tidur: Selamat Datang ke Cabaran KEVA 3D! Adakah anda bersedia? Setiap Cabaran KEVA 3D akan menghadirkan pelajar dengan satu set 3 paparan (Atas, Depan, dan Kanan). Dengan menggunakan pandangan ini sahaja, cabarannya adalah meletakkan Papan KEVA anda dengan cara yang sesuai dengan pandangan
Jalur Bowling 4 Kaki untuk Cabaran Robotik: 4 Langkah

4 Foot Bowling Lane for Robotics Challenge: Untuk program robotik musim panas kami, saya sedang berusaha untuk mengemas kini beberapa cabaran yang kami lakukan beberapa tahun yang lalu dan memperkenalkan beberapa idea baru. Yang pertama ini adalah yang pernah kita lakukan sebelum ini, tetapi tidak seperti ini. Sebelum ini, kami menggunakan pin boling kayu yang terbukti
Bagaimana Cabaran Reka Bentuk Bekalan Tenaga Dihadapi oleh Teknologi DC-DC: 3 Langkah

Bagaimana Cabaran Reka Bentuk Bekalan Tenaga Dihadapi oleh DC-DC Technologies: Saya akan menganalisis bagaimana reka bentuk bekalan kuasa cabaran dihadapi oleh DC-DC Technologies. Pereka sistem tenaga menghadapi tekanan berterusan dari pasaran untuk mencari jalan untuk memanfaatkan sepenuhnya kuasa. Dalam peranti mudah alih, kecekapan yang lebih tinggi