Daftar Isi:

Benar-Benar Menantang: 5 Langkah
Benar-Benar Menantang: 5 Langkah

Video: Benar-Benar Menantang: 5 Langkah

Video: Benar-Benar Menantang: 5 Langkah
Video: MASTER LIMBAD DITANTANG! GUS SYAMSUDIN SAMPAI KELUAR D4RAH DARI MULUT!? #shorts 2024, Juli
Anonim
Image
Image
Langkah 1: Solder Sirkuit
Langkah 1: Solder Sirkuit

Dunia modern menuntut manusia untuk keluar dari fisik dan hidup dalam digital.

Dengan munculnya Al dan perkembangan teknologi, orang terlalu percaya pada mesin dan percaya bahwa itu selalu benar.

"Sungguh" dimaksudkan untuk menggoyahkan kepercayaan palsu ini melalui pembuatan tes pendeteksi kebohongan palsu. Orang akan dengan mudah percaya bahwa Benar-benar berfungsi tetapi ketika jawaban salah diberikan, itu akan menggoyahkan kepercayaan buta mereka terhadap teknologi.

Langkah 1: Langkah 1: Solder Sirkuit

Karena karya saya hanya memiliki satu lampu, jadi sangat mudah untuk disolder. Masalah utama adalah pada awalnya, saya menyolder dua lampu, tetapi saya tidak segera menutupi bagian eksposur. Jadi ketika dua bagian kabel bersentuhan. Ini singkat.

Langkah 2: Langkah 2: Tulis Kode

p.p1 {margin: 0,0px 0,0px 0,0px 0,0px; tinggi garis: 15.0px; font: 12.0px Kali; warna: #000000; warna latar belakang: #ffffff}

p.p2 {margin: 0,0px 0,0px 0,0px 0,0px; tinggi garis: 15.0px; font: 12.0px Kali; warna: #000000; warna latar belakang: #ffffff; min-height: 14.0px} span.s1 {font-kerning: none}

Langkah 2: Tulis Kode

/*********************************************************************

Ini adalah contoh untuk modul Bluefruit LE berbasis nRF52 kami

Ambil satu hari ini di toko adafruit!

Adafruit menginvestasikan waktu dan sumber daya untuk menyediakan kode sumber terbuka ini, tolong dukung Adafruit dan perangkat keras sumber terbuka dengan membeli

produk dari Adafruit!

Lisensi MIT, periksa LISENSI untuk informasi lebih lanjut

Semua teks di atas, dan layar pembuka di bawah harus disertakan dalam

redistribusi apapun

*********************************************************************

/ Sketsa ini dimaksudkan untuk digunakan dengan kontrol NeoPixel

// muncul di aplikasi seluler Bluefruit LE Connect Adafruit.

/

/ - Kompilasi dan flash sketsa ini ke nRF52 Feather

// - Buka aplikasi Bluefruit LE Connect

// - Beralih ke utilitas NeoPixel

// - Klik tombol 'sambungkan' untuk membuat koneksi dan

// kirim meta-data tentang tata letak piksel

// - Gunakan utilitas NeoPixel untuk memperbarui piksel pada perangkat Anda

/* CATATAN: Sketsa ini membutuhkan setidaknya versi 1.1.0 dari Adafruit_Neopixel !!! */

#termasuk

#termasuk

#termasuk

#define NEOPIXEL_VERSION_STRING "Neopiksel v2.0"

#define PIN 16 /* Pin yang digunakan untuk menggerakkan NeoPixels */

#menentukan MAXCOMPONENTS 4

uint8_t *pixelBuffer = NULL;

uint8_t lebar = 0;

tinggi uint8_t = 0;

uint8_t langkah;

uint8_t komponenNilai;

bool adalah400Hz;

komponen uint8_t = 3; // hanya 3 dan 4 nilai yang valid

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel();

// Layanan BLE

BLEDfu berdarah;

BLEDis berdarah;

BLEUart bleuart;

batalkan pengaturan()

{

Serial.begin(115200);

while (!Serial) delay(10); // untuk nrf52840 dengan usb asli

Serial.println("Uji Neopiksel Adafruit Bluefruit");

Serial.println("--------------------------------");

Serial.println();

Serial.println("Silakan sambungkan menggunakan aplikasi Bluefruit Connect LE");

// Konfigurasi Neopiksel

neopixel.begin();

// Inisi Buah Biru

Buah biru.mulai();

Bluefruit.setTxPower(4); // Periksa bluefruit.h untuk nilai yang didukung

Bluefruit.setName("Bluefruit52");

Bluefruit. Periph.setConnectCallback(connect_callback);

// Agar konsisten OTA DFU harus ditambahkan terlebih dahulu jika ada

bledfu.begin();

// Konfigurasi dan Mulai Layanan Informasi Perangkat

bledis.setManufacturer("Adafruit Industries");

bledis.setModel("Bulu Buah Biru52");

bledis.begin();

// Konfigurasi dan mulai layanan BLE UART

bleuart.begin();

// Siapkan dan mulai beriklan

mulaiAdv();

}

batal startAdv (batal)

{

// 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 Pemindaian Sekunder (opsional)

// Karena tidak ada ruang untuk 'Nama' dalam paket Iklan

Bluefruit. ScanResponse.addName();

/* Mulai Beriklan

* - Aktifkan iklan otomatis jika terputus

* - Interval: mode cepat = 20 md, mode lambat = 152,5 md

* - Batas waktu untuk mode cepat adalah 30 detik

* - Mulai (batas waktu) dengan batas waktu = 0 akan beriklan selamanya (sampai terhubung)

*

* Untuk interval iklan yang direkomendasikan

*

*/

Bluefruit. Advertising.restartOnDisconnect(benar);

Bluefruit. Advertising.setInterval(32, 244); // dalam satuan 0,625 ms

Bluefruit. Advertising.setFastTimeout(30); // jumlah detik dalam mode cepat

Bluefruit. Advertising.start(0); // 0 = Jangan berhenti beriklan setelah n detik

}

batal connect_callback(uint16_t conn_handle)

{

// Dapatkan referensi ke koneksi saat ini

BLEConnection* koneksi = Bluefruit. Connection(conn_handle);

char central_name[32] = { 0 };

koneksi->getPeerName(nama_pusat, sizeof(nama_pusat));

Serial.print("Terhubung ke ");

Serial.println(nama_pusat);

Serial.println("Silahkan pilih tab 'Neopixels', klik 'Connect' dan selamat bersenang-senang");

}

lingkaran kosong()

{

// Gema menerima data

jika (Bluefruit.connected() && bleuart.notifyEnabled())

{

perintah int = bleuart.read();

beralih (perintah) {

case 'V': { // Dapatkan Versi

perintahVersi();

merusak;

}

case 'S': { // Atur dimensi, komponen, langkah…

perintahSetup();

merusak;

}

case 'C': { // Hapus dengan warna

perintahClearColor();

merusak;

}

case 'B': { // Atur Kecerahan

commandSetBrightness();

merusak;

}

case 'P': { // Setel Piksel

perintahSetPixel();

merusak;

}

case 'I': { // Terima gambar baru

perintahGambar();

merusak;

}

}

}

}

batalkan swapBuffer()

{

uint8_t *base_addr = pixelBuffer;

int pikselIndeks = 0;

untuk (int j = 0; j < tinggi; j++)

{

for (int i = 0; i < lebar; i++) {

if (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;

pikselIndeks++;

}

pixelIndex += langkah - lebar; // Pindahkan pixelIndex ke baris berikutnya (perhitungkan langkahnya)

}

neopixel.show();

}

batal perintahVersi() {

Serial.println(F("Perintah: Pemeriksaan versi"));

sendResponse(NEOPIXEL_VERSION_STRING);

}

batal perintahSetup() {

Serial.println(F("Perintah: Pengaturan"));

lebar = bleuart.read();

tinggi = bleuart.read();

langkah = bleuart.read();

componentValue = bleuart.read();

is400Hz = bleuart.read();

neoPixelType pixelType;

pixelType = nilai komponen + (is400Hz ? NEO_KHZ400: NEO_KHZ800);

komponen = (Nilai komponen == NEO_RGB || Nilai komponen == NEO_RBG || Nilai komponen == NEO_GRB || Nilai komponen == NEO_GBR || Nilai komponen == NEO_BRG || Nilai komponen == NEO_BGR) ? 3:4;

Serial.printf("\tukuran: %dx%d\n", lebar, tinggi);

Serial.printf("\tlangkah: %d\n", langkah);

Serial.printf("\tpixelType %d\n", pixelType);

Serial.printf("\tkomponen: %d\n", komponen);

if (pixelBuffer != NULL) {

hapus pixelBuffer;

}

uint32_t ukuran = lebar*tinggi;

pixelBuffer = new uint8_t[ukuran*komponen];

neopixel.updateLength(ukuran);

neopixel.updateType(pixelType);

neopixel.setPin(PIN);

// Selesai

sendResponse("Oke");

}

void commandSetBrightness() {

Serial.println(F("Perintah: SetBrightness"));

// Baca nilai

kecerahan uint8_t = bleuart.read();

// Setel kecerahan

neopixel.setBrightness(kecerahan);

// Segarkan piksel

swapBuffer();

// Selesai

sendResponse("Oke");

}

batalkan perintahClearColor() {

Serial.println(F("Perintah: ClearColor"));

// Baca warna

uint8_t warna[MAXCOMPONENTS];

for (int j = 0; j < komponen;) {

if (bleuart.available()) {

warna[j] = bleuart.read();

j++;

}

}

// Atur semua led menjadi warna

int ukuran = lebar * tinggi;

uint8_t *base_addr = pixelBuffer;

for (int i = 0; i < ukuran; i++) {

for (int j = 0; j < komponen; j++) {

*base_addr = warna[j];

basis_addr++;

}

}

// Tukar buffer

Serial.println(F("Hapus Warna Selesai"));

swapBuffer();

if (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("Oke");

}

batalkan perintahSetPixel() {

Serial.println(F("Perintah: SetPixel"));

// Baca posisi

uint8_t x = bleuart.read();

uint8_t y = bleuart.read();

// Baca warna

uint32_t pixelOffset = y*lebar+x;

uint32_t pixelDataOffset = pixelOffset*komponen;

uint8_t *base_addr = pixelBuffer+pixelDataOffset;

for (int j = 0; j < komponen;) {

if (bleuart.available()) {

*base_addr = bleuart.read();

basis_addr++;

j++;

}

}

// Setel warna

uint32_t neopixelIndex = y*langkah+x;

uint8_t *pixelBufferPointer = pixelBuffer + pixelDataOffset;

warna uint32_t;

if (komponen == 3) {

warna = neopixel. Color(*pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

Serial.printf("\tcolor (%d, %d, %d)\n", *pixelBufferPointer, *(pixelBufferPointer+1), *(pixelBufferPointer+2));

}

lain {

warna = 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("Oke");

}

batalkan perintahImage() {

Serial.printf("Perintah: Gambar %dx%d, %d, %d\n", lebar, tinggi, komponen, langkah);

// Terima buffer piksel baru

int ukuran = lebar * tinggi;

uint8_t *base_addr = pixelBuffer;

for (int i = 0; i < ukuran; i++) {

for (int j = 0; j < komponen;) {

if (bleuart.available()) {

*base_addr = bleuart.read();

basis_addr++;

j++;

}

}

/*

if (komponen == 3) {

indeks uint32_t = i*komponen;

Serial.printf("\tp%d (%d, %d, %d)\n", i, pixelBuffer[index], pixelBuffer[index+1], pixelBuffer[index+2]);

}

*/

}

// Tukar buffer

Serial.println(F("Gambar diterima"));

swapBuffer();

// Selesai

sendResponse("Oke");

}

void sendResponse(char const *respon) {

Serial.printf("Kirim Respons: %s\n", respon);

bleuart.write(respons, strlen(respons)*sizeof(char));

}

Langkah 3: Langkah 3: Membeli Kap Lampu

Langkah 3: Membeli Kap Lampu
Langkah 3: Membeli Kap Lampu
Langkah 3: Membeli Kap Lampu
Langkah 3: Membeli Kap Lampu

Langkah 4: Langkah 4: Tarik Semuanya Bersama

Direkomendasikan: