shell实现根据输入的文字打印出大号字符艺术

树莓派PICO驱动电子墨水屏制作智能老黄历:硬件连接、MicroPython编程与低功耗设计 微控制器与嵌入式开发是物联网和智能硬件的技术基石,其核心在于通过编程控制硬件执行特定任务。树莓派PICO作为一款高性能、低成本的微控制器,凭借其双核ARM Cortex-M0+处理器和对MicroPython的友好支持,成为快速原型开发的理想选择。结合电子墨水屏(E-Ink)仅在刷新时耗电的显示保持特性,能够构建超低功耗的常显设备,在智能家居、信息展示等场景中极具技术价值。本文聚焦于利用树莓派PICO W与SPI接口电子墨水屏,实现一个自动更新、显示农历与宜忌信息的实体老黄历摆件,详细阐述了从硬件选型、电路 阅读详情

创建脚本

#!/bin/bash
# bigfont.sh - 纯 Shell 大字体库

# 定义大字体,每个字符 6 行
declare -A bigfont

# ---------------- 字母 ----------------
bigfont["A"]=" █████╗  
██╔══██╗ 
███████║ 
██╔══██║ 
██║  ██║ 
╚═╝  ╚═╝ "

bigfont["B"]="██████╗  
██╔══██╗ 
██████╔╝ 
██╔══██╗ 
██████╔╝ 
╚═════╝  "

bigfont["C"]=" ██████╗ 
██╔════╝ 
██║      
██║      
╚██████╗ 
 ╚═════╝ "

bigfont["D"]="██████╗  
██╔══██╗ 
██║  ██║ 
██║  ██║ 
██████╔╝ 
╚═════╝  "

bigfont["E"]="███████╗ 
██╔════╝ 
█████╗   
██╔══╝   
███████╗ 
╚══════╝ "

bigfont["F"]="███████╗ 
██╔════╝ 
█████╗   
██╔══╝   
██║      
╚═╝      "

bigfont["G"]=" ██████╗ 
██╔════╝ 
██║  ███╗
██║   ██║
╚██████╔╝
 ╚═════╝ "

bigfont["H"]="██╗  ██╗ 
██║  ██║ 
███████║ 
██╔══██║ 
██║  ██║ 
╚═╝  ╚═╝ "

bigfont["I"]="██╗
██║
██║
██║
██║
╚═╝"

bigfont["J"]="     ██╗ 
     ██║ 
     ██║ 
██   ██║ 
╚█████╔╝ 
 ╚════╝  "

bigfont["K"]="██╗  ██╗ 
██║ ██╔╝ 
█████╔╝  
██╔═██╗  
██║  ██╗ 
╚═╝  ╚═╝ "

bigfont["L"]="██╗      
██║      
██║      
██║      
███████╗ 
╚══════╝ "

bigfont["M"]="███╗   ███╗
████╗ ████║
██╔████╔██║
██║╚██╔╝██║
██║ ╚═╝ ██║
╚═╝     ╚═╝"

bigfont["N"]="███╗   ██╗
████╗  ██║
██╔██╗ ██║
██║╚██╗██║
██║ ╚████║
╚═╝  ╚═══╝"

bigfont["O"]=" ██████╗ 
██╔═══██╗
██║   ██║
██║   ██║
╚██████╔╝
 ╚═════╝ "

bigfont["P"]="██████╗  
██╔══██╗ 
██████╔╝ 
██╔═══╝  
██║      
╚═╝      "

bigfont["Q"]=" ██████╗  
██╔═══██╗
██║   ██║
██║▄▄ ██║
╚██████╔╝
 ╚══▀▀═╝ "

bigfont["R"]="██████╗  
██╔══██╗ 
██████╔╝ 
██╔═══╝  
██║      
╚═╝      "

bigfont["S"]="███████╗ 
██╔════╝ 
███████╗ 
╚════██║ 
███████║ 
╚══════╝ "

bigfont["T"]="████████╗
╚══██╔══╝
   ██║   
   ██║   
   ██║   
   ╚═╝   "

bigfont["U"]="██╗   ██╗
██║   ██║
██║   ██║
██║   ██║
╚██████╔╝
 ╚═════╝ "

bigfont["V"]="██╗   ██╗
██║   ██║
██║   ██║
╚██╗ ██╔╝
 ╚████╔╝ 
  ╚═══╝  "

bigfont["W"]="██╗    ██╗
██║    ██║
██║ █╗ ██║
██║███╗██║
╚███╔███╔╝
 ╚══╝╚══╝ "

bigfont["X"]="██╗  ██╗
╚██╗██╔╝
 ╚███╔╝ 
 ██╔██╗ 
██╔╝ ██╗
╚═╝  ╚═╝"

bigfont["Y"]="██╗   ██╗
╚██╗ ██╔╝
 ╚████╔╝ 
  ╚██╔╝  
   ██║   
   ╚═╝   "

bigfont["Z"]="███████╗
   ██╔╝  
  ██╔╝   
 ██╔╝    
██╔╝     
███████╗ "

# ---------------- 数字 ----------------
bigfont["0"]=" ██████╗ 
██╔═══██╗
██║   ██║
██║   ██║
╚██████╔╝
 ╚═════╝ "

bigfont["1"]="  ██╗    
 ███║    
  ╚██║   
   ██║   
   ██║   
   ╚═╝   "

bigfont["2"]="██████╗ 
╚════██╗
 █████╔╝
██╔═══╝ 
███████╗
╚══════╝"

bigfont["3"]="██████╗ 
╚════██╗
 █████╔╝
 ╚═══██╗
██████╔╝
╚═════╝ "

bigfont["4"]="██╗  ██╗
██║  ██║
███████║
╚════██║
     ██║
     ╚═╝"

bigfont["5"]="███████╗
██╔════╝
███████╗
╚════██║
███████║
╚══════╝"

bigfont["6"]=" ██████╗ 
██╔════╝ 
███████╗ 
██╔══██║ 
╚██████║ 
 ╚═════╝ "

bigfont["7"]="███████╗
╚════██║
    ██╔╝
   ██╔╝ 
  ██╔╝  
  ╚═╝   "

bigfont["8"]="███████╗
██╔══██╗
███████║
██╔══██║
███████║
╚══════╝"

bigfont["9"]="███████╗
██╔══██╗
███████║
╚════██║
███████║
╚══════╝"

# ---------------- 特殊字符 ----------------
bigfont[" "]="        
        
            
            
        
        "
        
bigfont["-"]="        
        
 ██████╗ 
 ╚═════╝ 
        
        "

bigfont["."]="        
        
        
        
        
  ██╗    
  ╚═╝    "

# ---------------- 打印函数 ----------------
print_big() {
    local input="$1"
    local lines=6  # 每个字符行数
    
    # 创建数组存储每行输出
    local output_lines=("" "" "" "" "" "")
    
    # 逐字符处理
    for ((j=0;j<${#input};j++)); do
        char="${input:j:1}"
        
        # 如果是小写字母,转换为大写
        if [[ "$char" =~ [a-z] ]]; then
            char=$(echo "$char" | tr 'a-z' 'A-Z')
        fi
        
        # 获取字符的6行表示
        if [[ -n "${bigfont[$char]}" ]]; then
            # 将字符的6行分割到数组
            IFS=$'\n' read -r -d '' -a char_lines <<< "${bigfont[$char]}"
            
            # 将每行添加到输出数组
            for ((i=0;i<lines;i++)); do
                # 如果字符行数不够,用空格补齐
                if [[ -n "${char_lines[$i]}" ]]; then
                    line_content="${char_lines[$i]}"
                else
                    line_content=""
                fi
                # 固定宽度:每个字符占10个字符宽度
                output_lines[$i]="${output_lines[$i]}${line_content}  "
            done
        else
            # 对于未定义的字符,用空格占位
            for ((i=0;i<lines;i++)); do
                output_lines[$i]="${output_lines[$i]}${char}           "
            done
        fi
    done
    
    # 打印所有行
    for ((i=0;i<lines;i++)); do
        echo "${output_lines[$i]}"
    done
}

# 测试函数
test_print() {
    echo "=== 测试数字 ==="
    print_big "1234567890"
    echo ""
    echo "=== 测试字母 ==="
    print_big "ABCDEFGHIJKL"
    print_big "MNOPQRSTUVWXYZ"
    echo ""
    echo "=== 测试混合 ==="
    print_big "HELLO 2024"
}

# 如果传入参数,则打印参数,否则运行测试
if [[ $# -gt 0 ]]; then
    print_big "$*"
else
    test_print
fi

运行测试

# 打印参数
./bigfont.sh "HELLO WORLD"

# 或者直接运行脚本测试
./bigfont.sh

树莓派Pico驱动2.13英寸电子墨水屏:从SPI接口到桌面信息站实战 电子墨水屏(e-Paper)是一种基于微胶囊电泳技术的反射式显示器件,其核心原理是通过电场控制黑白带电粒子在微胶囊内的移动来形成图像。与传统LCD屏不同,e-Paper仅在刷新时耗电,显示内容在断电后仍能保持,这一特性使其在超低功耗和类纸视觉体验场景中具有独特的技术价值。在嵌入式开发领域,e-Paper常被用于构建桌面信息站、电子标签、智能传感器显示终端等需要长期显示且功耗敏感的应用。本文以树莓派Pico微控制器驱动2.13英寸e-Paper显示屏为例,深入解析了SPI通信协议、帧缓冲区(Framebuff 阅读详情

相关推荐

ArduPy脚本化驱动Wio Terminal LCD:Python快速硬件开发实践

在嵌入式开发领域,Python因其简洁语法和快速迭代能力,正通过MicroPython及其衍生框架(如ArduPy)拓展到硬件编程场景。其核心原理在于将Python解释器移植到微控制器,通过高级脚本语言直接操作底层硬件寄存器,实现了无需编译、即写即跑的开发模式。这一技术价值在于极大降低了硬件交互的门槛,使开发者能专注于功能逻辑而非底层细节,特别适用于原型验证、教育演示和快速工具开发。在应用场景上,它广泛应用于物联网设备、数据可视化终端和交互式教学装置中。本文以Wio Terminal开发板为例,深入探讨了如

weixin_30437847的博客 328

Pandoc 实战:从 Markdown 到专业 PDF 的自动化排版指南

在技术文档和学术写作领域,内容创作与格式排版常常是分离的工作流。Markdown 以其简洁的语法,成为编写结构化内容的理想选择,但其原生格式无法满足印刷和正式提交的排版要求。为了解决从‘内容’到‘精美呈现’的鸿沟,文档转换工具应运而生,其核心原理在于解析源文件结构,并应用预定义的样式规则进行渲染。这类工具的技术价值在于实现了内容与样式的解耦,极大提升了文档生产的效率和格式的一致性。典型的应用场景包括生成技术报告、学术论文、项目文档等需要专业排版的场合。本文聚焦于 Pandoc 这一‘文档转换的瑞士军刀’,它

weixin_33895657的博客 411

Linux系统中通过/etc/shadow文件更改root默认密码和密码过期时间

文件中每行代表一个用户,使用 ":" 作为分隔符,每行用户信息被划分为 9 个字段。每个字段的含义如下:用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段字段含义用户名(账户)用户登录系统时使用的用户名加密后的密码1.若删除此密码,那么登录就不需要密码了2.这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,一些嵌入式设备依然采用的是 MD5 或 DES 加密算法。

lu_linux的博客 9942

16-11-18

一个有趣的shell脚本 echo ' ..XXX. .XXX.. .XXXXY.TXXXX. XXXXXYXTXXXXX .VXXVYXTVXXX. `.TYXTXYXTV . ` ,YVTXYYV ., `...XXXXX`.., .`...XXX...,. ..`   V   ,.' | tr '.`, VYTX' ' ()__() '

qq_36698937的博客 968

linux服务器测试NVIDIA显卡性能

Linux服务器NVIDIA显卡驱动+cuda+cudnn安装及显卡性能测试

lu_linux的博客 5749

海南师范大学LaTeX学位论文模板2.0:一键解决论文格式排版难题

学位论文写作中,格式规范往往比内容本身更消耗精力,尤其是目录对齐、页码体系、参考文献格式等细节,手工调整既繁琐又易错。LaTeX作为一种基于“内容与格式分离”原理的排版系统,通过宏包和模板统一控制文档样式,能够从根本上解决这类问题。它借助 XeLaTeX 引擎和 ctexbook 文档类,实现中文字体、字号、行距的精确管理,同时利用 BibTeX 自动生成符合标准的参考文献列表,交叉引用也能随内容更新自动刷新。这种技术方案不仅适用于高校学位论文,也广泛用于期刊投稿、技术报告和书籍排版。本文以海南师范大学本硕

weixin_42635064的博客 255

Shell脚本中教你打印彩色背景、字体

Shell脚本打印彩色背景、字体,醒目提醒。

和佬们一起快乐学习鸭! 1554

使用cubeMX生成USB HID设备

本文主要介绍如何使用stm32开发板和cubeMX生成HID设备,供参考。

专注音频,高效工作,快乐生活! 970

Shell 的字体样式设置

Shell的字体颜色设置1. shell 代码和效果2. shell 字体样式说明2. shell 字体样式格式 1. shell 代码和效果 #!/bin/bash # 字体颜色 for i in {31..37}; do echo -e "\033[$i;40mHello world!\033[0m" done # 背景颜色 for i in {41..47}; do ...

YKenan的博客 1830

激光定位算法竞技场:hdl_localization与Cartographer/AMCL的横向技术解剖

本文深入对比了hdl_localization、Cartographer和AMCL三种激光定位算法的技术原理与性能表现。通过UKF-NDT融合、图优化和粒子滤波等核心技术,分析了各算法在结构化环境、动态环境和大尺度场景下的适应性。实验数据表明,Cartographer在全局一致性上表现最优,而AMCL在动态环境中更具鲁棒性。文章还提供了算法选型指南和参数调优技巧,为工程实践提供参考。

weixin_29062865的博客 365

WinFrom真入门(1)——Windows窗体应用概念

用Winform开发的桌面程序,是在Windows操作系统上运行的,这个不用多说。窗体(Form)的作用‌:窗体是用户交互的容器,承载按钮、文本框等控件,构成应用程序的界面‌。在Windows操作系统中,窗体(窗口)所处可见,例如: 一个标准的窗体其实就是一块矩形区域,客户区域指的是窗口内部区域。除去标题兰和边框外的区域可视为内部区域,称为客户区域。我们开发人员可以在窗口的客户区域中放置控件,也可以在其中绘制出咱们所需要的图形。WinForm程序的项目的结构,如下图: Main()方法是程序的入口,这几行代

ByteGeek 1633

Linux输出艺术字体

sudo apt-get install figlet 安装完之后 执行 figlet some text //some text 可以填自己想输入的内容   sudo apt-get install toilet toilet some other text   花里胡哨  哈哈哈哈~~~...

不一样的烟火 3897

人形机器人人机交互解决方案(2026完整版)

《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑

随读手记 775

【Linux 系统编程】shell 脚本基础学习(一)

转载请标明出处: http://blog.youkuaiyun.com/u011974987/article/details/52702734 本文出自:【stromxu的博客】前言Linux shell 脚本基础我们将分几篇文章来记录,希望对我们这些初次接触Linxu shell脚本编程的初学者有帮助; Linxu shell 脚本基础学习先来介绍shell的语法,开头、注释、变量和环境,虽然不涉及到

stromxu 的专栏 1504

ControlRig蓝图节点对应代码(自用)

用于通过python生成ControlRig蓝图节点,非完整

dicha9的博客 425

『MaxKB 2.x 开发环境搭建』在Windows下运行最新源码的完整步骤

本文将详细介绍如何在Windows系统中完成MaxKB最新版(2.x)开发环境的搭建,包括前端、后端以及数据库的配置,确保开发者能够顺利启动项目。

老陈聊架构 584

马萨诸塞大学等突破:AI实现无索引直接搜索式答案定位能力提升

马萨诸塞大学等突破:AI实现无索引直接搜索式答案定位能力提升

weixin_49122920的博客 218

Arduino ESP8266自定义配置分区表

ESP8266自定义分区表配置 随着项目的不断开发,项目文件也不断在增大,在没有考虑更换主硬件的条件下,最大开发利用有限资源势在必行,所以今天带来ESP8266自定义分区表的配置。 我这里以版本:2.7.4版本为例,后面的版本也是支持的。 注意:自定义分区表特别要注意和你的硬件相对应,flash芯片的大小决定这个分区是否有效,否则有意想不到的事情发现。 自定义分区表的几个重要参数 /* Flash Split for 4M chips */ /* sketch @0x40200000 (~1019K

perseverance51博客 1725

VC++ MFC实战:从零开发Windows倒计时工具,掌握桌面开发核心

Windows桌面开发的核心在于理解其底层消息循环与窗口机制。通过消息驱动模型,应用程序能够响应用户输入和系统事件,这是所有Windows GUI程序的运行基础。在技术实现上,MFC(Microsoft Foundation Classes)作为经典的C++框架,对Windows API进行了面向对象封装,极大提升了开发效率,同时保留了精细的系统资源控制能力。这种技术组合在需要高可靠性、高性能和对系统底层有深度访问需求的场景中,如工业控制软件、专业工具开发等领域,具有不可替代的价值。本文以开发一个倒计时工具

Coding 428

【深度学习新浪潮】近三年垂域大模型研究与产品进展全景洞察(2022-2025)

近三年来,垂域大模型完成了从技术探索到产业落地的关键跨越,在多个行业实现效率提升与价值创造。面对数据治理、技术适配、生态建设等挑战,未来需要通过技术创新、标准制定、人才培养等多维度发力,推动垂域大模型向更高效、更可靠、更普惠的方向发展。随着"人工智能+"行动的深入推进,垂域大模型将成为数字经济与实体经济深度融合的核心驱动力,为产业智能化升级注入持续动能。

专注:太空算力、AI infra、异构调度、大模型成本工程 786

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

AI生成文档导出全链路指南:从ChatGPT/Gemini到可归档PDF

AI生成内容正成为知识生产新范式,但原始输出缺乏格式稳定性、元数据支持与长期可追溯性。其本质是结构化文本(如Markdown)向正式交付文档(PDF/Word)的转换问题,涉及内容保真、样式控制、自动化注入与归档治理四大技术环节。ChatGPT和Gemini虽不提供原生导出功能,却通过开放响应数据流,为开发者留出定制化出口。本文聚焦零代码到深度集成的三类落地路径,详解如何用浏览器扩展、VS Code插件与Pandoc等工具链,实现格式95%+保真、元数据编程化、单次操作<30秒的稳定导出,覆盖个人知识管理、

weixin_30745553的博客 446

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ESP32 MicroPython驱动TTGO T-Display彩色屏:从固件刷写到图形界面开发

在嵌入式开发中,SPI接口的TFT液晶屏常被用于构建人机交互界面,其驱动原理涉及显存映射、颜色格式转换和时序控制等底层硬件操作。MicroPython作为轻量级Python实现,通过封装硬件抽象层,极大简化了嵌入式图形编程的复杂度,提升了物联网设备的开发效率。本文以流行的ESP32开发板TTGO T-Display为例,详细解析如何通过社区增强版Loboris固件,解决ST7789驱动芯片的初始化和颜色显示问题,并利用其集成的display模块实现从基础绘图到动态仪表盘的完整应用。内容涵盖固件刷写、SPI引

weixin_30599769的博客 387

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

linux shell脚本中copy带空格的目录或文件

在linux下复制带空格的文件夹(文件)时,需要加反斜杠,如: mkdir "te st" cp -rf te\ st te\ st-org/ 但有时候会需要在shell脚本中cp 带空格的路径会出错: 在脚本内复制带空格的文件夹(文件)时,不能直接把带空格的路径赋值给一个变量然后复制。 例如: usb_path=/mnt/sda1 folder_path="/Library/Ap...

lu_linux的博客 1万+

Linux上安装指定版本的torch

1.安装pip和pip3 sudo apt-get install python-setuptools python-dev build-essential sudo easy_install pip sudo apt-get install python3-pip 2.安装torch pip3 install torch==0.4.1 -f https://download.p...

lu_linux的博客 8186

Linux使用lsof查看文件是否被占用或者端口被占用

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TCP和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 常见的使用方式: $.

lu_linux的博客 5072
上一篇: Rocky9.2部署llama3.1-8b训练环境
下一篇: Rocky9.2 U盘系统插到不同机器网卡名变化导致无法获取DHCP地址问题解决
我是谁??
博客等级 码龄11年 242粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值